2014-11-03 115 views
0

我有以下查詢(選擇企業某一特定日期前的最後一次變更)LINQ的與的GroupBy,Order和FirstOrDefault使用導航屬性

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

我怎樣寫使用導航屬性相同的查詢? 喜歡的東西:

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

回答

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

這應該爲你工作,而更多地瞭解數據結構或您的努力實現最後的結果是什麼。爲幫助編寫LINQ一個好的工具LINQPad

1

這是你的查詢語法的方法相當於: -

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

我不知道爲什麼你正在做的有序列表上FirstOrDefault而不是使用它的結果?

反正,在這Fiddle你可以看到兩種語法的類似輸出。