2016-01-13 14 views
0

在我的表中,我有一個屬性詳細信息。每個屬性都有代理名稱。我想按代理名稱進行分組,並將每個代理的最後一行插入。我使用下面的代碼,但它給出了第一行值。當我使用lastordefault時,它顯示錯誤。任何一個有任何想法如何通過使用linq獲取組中的最後一個數據

var property = (from n in properties select n).GroupBy(x => x.agentname) 
       .Where(g => g.Count() == 1) 
       .Select(g => g.FirstOrDefault()).OrderByDescending(x => x.datecreated).Take(20); 
+1

'。凡(G => g.Count()== 1)'產生1個記錄 –

回答

0

的所有第一個查詢是沒有意義的,我首先即(from n in properties select n)您可以properties直接申請GroupBy。接下來,您將從組中選擇第一條記錄,並在完成結果上應用OrderByDescending,因爲您只有1條記錄,所以不會執行任何操作。

這應該給您預期的結果: -

var property = properties.GroupBy(x => x.agentname) 
         .Select(x => x.OrderByDescending(z => z.datecreated) 
             .FirstOrDefault()); 

這將返回一個包含last inserted row of each agent的集合。

+0

我以爲你的查詢是錯誤的 –

+0

我們怎樣才能orderbydescnding –

+0

獲取日期@RahulSingh沒有'x.datecreated'後'GroupBy'(x is'IGrouping <...>':) :) –

相關問題