Linq使用Navigation属性进行GroupBy,Order和FirstOrDefault

时间:2014-11-03 13:07:59

标签: linq navigation group-by

我有以下查询(选择公司在特定日期之前的最后更改)

q = from a in q
where a.Date <= date
group a by a.CompanyId into g
select g.OrderByDescending(t => t.Date).FirstOrDefault();

如何使用Navigation Property编写相同的查询? 类似的东西:

q = q.Where(a => a.Date <= date).GroupBy(a => a.CompanyId ).OrderByDescending(g => ...;

2 个答案:

答案 0 :(得分:1)

这是与查询语法等效的方法: -

var methodQuery = q.Where(x => x.Date <= date).GroupBy(g => g.CompanyId).Select(s => s.OrderByDescending(o => o.Date).FirstOrDefault());

我不确定为什么你在有序列表上做FirstOrDefault而不是在结果上使用它?

无论如何,在这个Fiddle中你可以看到两种语法的类似输出。

答案 1 :(得分:0)

q = q.Where(a => a.Date <= d).GroupBy(a => a.CompanyId).OrderByDescending(t => t.Date).FirstOrDefault();

这应该对您有用,而不需要了解更多有关数据结构或您希望实现的最终结果。帮助编写linq的好工具是LINQPad