2011-12-05 47 views
7

使用.NET LINQ,我想查找以PID開頭的條目(名稱)等於0或1.但是,如果名稱同時具有,我只需要0.在以下:如何查找LINQ的第一次出現

PID Name 
0 P1 
1 P1 
1 P3 
0 P4 
0 P5 
1 P5 

我會回來行:

0 P1 
1 P3 
0 P4 
0 P5 

的PID值可以達到10任何建議,這可怎麼辦呢?

回答

11

您可以使用:

var results = collection 
       .Where(item => item.PID == 0 || item.PID == 1) 
       .GroupBy(item => item.Name) 
       .Select(g => g.OrderBy(item => item.PID).First()); 
+0

爲什麼FirstOrDefault()獨自工作? – 4thSpace

+0

在組列表中當然存在一個成員,所以Firs()具有很高的可讀性。 –

+0

@ 4thSpace FirstOrDefault將返回一個元素。 GroupBy使它按特定元素分組,因此您返回每個組的第一個元素。你可以使用FirstOrDefault而不是First,但是這個組已經做了過濾,所以這個默認不會發生...... –

0

在聲明的末尾加上 「.FirstOrDefault()」

+0

是否相等部分剛需「,其中PID == 0 || PID == 1'? – 4thSpace

相關問題