2011-08-24 71 views
2
List<int> types = Hospitals.GroupBy(h => h.TypeId, (key, group) => group.First()) 
        .Select(t=> y.TypeId).ToList(); 

嘗試從List<Hospital>對象中獲取不同的類型ID。我不是這些linq查詢的專家,只是想知道是否有更好的方法來做到這一點。你能簡化這個linq-to-entity groupBy查詢嗎?

回答

5

如果你想要的是不同的typeid的領域,它比這更簡單:在你的原始查詢

var types = Hospitals.Select(h => h.TypeId).Distinct(); 

只是一個側面說明:我經常發現,這些操作的方法式語法可讀性低於查詢理解。當然,這歸結於個人風格,但到目前爲止,我不認爲我曾經在方法語法中編寫過GroupBy()或Join()方法;對我來說,這只是流動更好:

var types = from h in Hospitals 
      group h by h.TypeId into types 
      select types.Key; 
+0

你的回答很好,但我不同意查詢語法。基本的'GroupBy()'和查詢語法一樣 - '.GroupBy(h => h.TypeId)'。這個問題演示了許多'GroupBy'重載之一...... http://msdn.microsoft.com/en-us/library/system.linq.enumerable.groupby.aspx –

+0

實際上,我傾向於發現查詢理解更容易除了簡單的Select()或Where()方法以外,大多數情況下都可以消化,但當然,這些都只是個人意見。 –

+0

我明白了,很多人比其他人更喜歡(我更喜歡方法)。我不介意查詢語法,但是在將基本'group x by'與使用方法語法的更復雜的重載之一進行比較時,它是蘋果和桔子。 –