2015-06-14 38 views
1

我有這樣如何從物品清單中找到最短日期?

id | itemId | date | 
1 | a1  | 6/14/2015 
2 | a1  | 3/14/2015 
3 | a1  | 2/14/2015 
4 | b1  | 6/14/2015 
5 | c1  | 6/14/2015 

從這個表結構的表結構,我試圖讓所有擁有分鐘日期不同的項目。例如,我想獲得ID = 3,4和5

我曾嘗試下面的代碼,但我不能

var items = (from i in _db.Items 
      //where min(i.date) // doesn't seem right 
      group i by i.itemID 
      into d select new 
      { 
       iId = d.Key, 
      }).Distinct(); 

回答

-1
var items = from i in _db.Items 
      group i.date by i.itemID 
      into d select new { 
       iId = d.Key, iDate = d.Min() 
      }; 
+0

請讓我知道你爲什麼這樣投票嗎? –

+0

您能否請[編輯]解釋爲什麼這段代碼回答這個問題?僅限代碼答案[阻止](http://meta.stackexchange.com/q/148272/274165),因爲他們沒有教導解決方案。 (這篇文章被至少一個用戶標記,大概是因爲他們認爲沒有解釋的答案應該被刪除。這可能是downvote的原因,儘管我無法確定。) –

0

鑑於你的樣本數據,我這樣做:

var query = 
    from i in _db.Items 
    group i by i.itemId into gis 
    let lookup = gis.ToLookup(x => x.date, x => x.id) 
    from x in lookup[gis.Min(y => y.date)] 
    select x; 
+0

感謝您的回覆。我怎樣才能返回Id呢? – Lakhae