2011-07-07 50 views
29

給定一個對象集合「項目」的LINQ表達式,比如這個:LINQ選擇LAMBDA形式重複計數

var total = (from item in items select item.Value).Distinct().Count() 

是否有可能將其轉換爲使用LINQ功能/ lambda表達式:

items.Select(???).Distinct().Count() 
+0

或只是'items.GroupBy(P => p.Value).Count之間的()' – Slai

回答

46

使用此:

items.Select(i => i.Value).Distinct().Count() 
+0

感謝 - 不知道我怎麼沒嘗試! – Kyle

11

它必須是可能的,因爲在幕後,LINQ轉換爲lambda表達式和表達TRE ES(至少LINQ到對象)

在你的情況的???部分將是item => item.Value,即對於item,輸出item.value。 所以,整個表達式將

var total = items.Select(item => item.Value).Distinct().Count(); 
+3

似乎3分太晚了! ! – V4Vendetta

+0

謝謝,+1描述,恐怕丹尼爾毆打你的答案,但! – Kyle