我怎样才能 select 一条记录(降序排列)?

How can I select one record (ordered by descending)?

我使用 LINQ-TO-SQL。我有控制令。在控件中我有一个 属性 OrderDetail。我只想显示最后更新的数据。所以我必须通过 ChangedAt 订购。那是一个 DateTime 字段。

当我尝试打开这个实体时。我收到类似 Specified cast is not valid 的错误,而我通过调试看到 selection 有 1 行。

如何 select 一条记录,按降序排列 (ChangedAt)?

两个实体之间的关系 Order : OrderDetail <=> 1 : n.

partial class Order : ILock, ICloneable
{
   ...
    public OrderDetail Detail
    {
        get
        {
            var detail = this.OrderDetails.Select(od => od);

            if (detail != null && detail.Count() > 0)
                return detail.OrderByDescending(od => od.ChangedAt).FirstOrDefault();
            else
                return null;
        }
    }

我认为这不重要。但是我使用 SQL-Server 作为数据库。

您可以简单地执行此操作以获取列表中的第一条记录,按 ChangedAt:

降序排列
public OrderDetail Detail
{
    get
    {
        return this.OrderDetails
            .OrderByDescending(od => od.ChangedAt)
            .FirstOrDefault();
    }
}

不需要在 LINQ to entities/SQL 中进行空检查,因为内部表达式解析器会为您处理。