2011-12-05 42 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

相关问题