2014-10-17 45 views
0

應用順序下面是在C#中我很簡單的LINQ查詢LINQ查詢不被

var latest = (from calc in context.db_accounts_last_contacts 
    group calc by calc.account_id into calcGroup 
    select calcGroup); 

var ordered = (from calcg in latest 
    let item = (from items in calcg 
     orderby items.last_contact_date descending 
     select items).FirstOrDefault() 
    select item); 

這裏是db_accounts_last_contacts有 Image

所以基本上我的查詢應該返回這個 [0]應(因爲last_contact_date命令在我的有序查詢中) 1應該是行ID 2 [2]應該是行ID 14

基本上這可以工作,但每次我運行我的訂購查詢時,我總是會拔出行ID 2,當我應該拔出行ID 13,

任何人都可以看到爲什麼我的orderby未在我的有序linq中使用查詢?

更新

這是我的LINQ查詢現在

var ordered = (from calcg in latest 
    let item = (from items in calcg 
     select items).FirstOrDefault() 
    orderby item.last_contact_date descending 
    select item); 

但我仍然得到同樣的結果

回答

3

在這段代碼:

var ordered = (from calcg in latest 
    let item = (from items in calcg 
     orderby items.last_contact_date descending 
     select items).FirstOrDefault() 
    select item); 

OrderBy是在.FirstOrDefault()之前應用,並且有一個項目是重複的轉身。我明白爲什麼那OrderBy在那裏;它決定選擇哪個項目。但是這不會產生最終的順序;如果您想要訂購最終產品組,您需要let以外的其他OrderBy

+0

更新我的問題 – Canvas 2014-10-17 15:58:57

+0

好像你正在尋找更平坦。 http://stackoverflow.com/questions/1590723/flatten-list-in-linq。另外,你可以嘗試創建一個'無序'集合,然後只是'orderby'和'select'。 – 2014-10-17 16:01:06

+0

我不希望返回類型是db_accounts_last_contacts – Canvas 2014-10-17 16:03:51