我使用LINQ-TO-SQL。我有一个控制订单。在控件中我有一个属性OrderDetail。我只想显示最新更新的数据。所以我必须通过ChangedAt订购。这是一个DateTime字段。
当我尝试打开这个实体时。我收到错误,如指定的强制转换无效,而我通过调试看到选择有1行。
如何选择一条记录,按降序排序(ChangedAt)?
两个实体之间的关系订单: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作为数据库。
答案 0 :(得分:1)
您只需执行此操作即可获得列表中的第一条记录,按ChangedAt
降序排列:
public OrderDetail Detail
{
get
{
return this.OrderDetails
.OrderByDescending(od => od.ChangedAt)
.FirstOrDefault();
}
}
不需要在LINQ中检查实体/ SQL,因为内部表达式解析器会为您处理此事。