如何解决EF Core 5,在子集合中按日期订购实体
public class Invoice{
public int Id {get;set;}
ICollection Product Products {get;set;}
}
public class Product {
public int Id {get;set;}
public DateTime ReceptionDate {get;set;}
public virtual Invoice Invoice{get;set;}
}
我想显示按 Product ReceptionDate 订购的发票,所以最新产品的发票先显示。我也在对结果进行分页。
我试过了
invoices.OrderByDescending(x => x.Products.Select(y => y.ReceptionDate)).Skip(x).Take(y);
无法通过搜索找到类似的问题。
谢谢。
编辑: 还尝试了 Sergey 解决方案,但它太慢了,因为它调用 ToArray() 从数据库中获取数千条记录。
解决方法
试试这个查询:
var query=Products
.GroupBy(g => new { g.Invoice.Id,g.ReceptionDate})
.Select(g => new
{
Id=g.Key.Id
ReceptionDate=g.Key.ReceptionDate
})
.OrderBy(x => x.ReceptionDate)
.ToArray();
,
也许你应该试试这个:
invoices.OrderByDescending(x => x.Products.Max(y => y.ReceptionDate));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。