我有以下查询(选择公司在特定日期之前的最后更改)
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 => ...;
答案 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