LINQ

2011-12-05 22 views
7

ile ilk olay nasıl bulunur .NET LINQ kullanarak, PID ile 0 veya 1'e eşit olan girdileri (Name) bulmak istiyorum. Ancak Ad'ın her ikisi de varsa, yalnızca 0 istiyorum. :LINQ

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

Ben satırları geri döneceğiz:

0 P1 
1 P3 
0 P4 
0 P5 

PID değerleri bu nasıl yapılabilir 10 herhangi bir öneriniz kadar gidebilir? Açıklamanın sonunda

cevap

11

Sen kullanabilirsiniz:

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

Neden FirstOrDefault() yalnız çalışmıyor? – 4thSpace

+0

Grup listesinde kesinlikle bir üye var, So Firs() çok okunabilir. –

+0

@ 4thSpace FirstOrDefault tek bir öğe döndürecektir. GroupBy, belirli öğelerle gruplandırılmasına neden olur, böylece her grubun ilk öğesini döndürürsünüz. Yukarıdaki İlk yerine FirstOrDefault kullanabilirsiniz, ancak grup zaten bir filtreleme yapar, bu nedenle varsayılan asla olmaz ... –

0

add ".FirstOrDefault()"

+0

eşit parçasını mu Sadece nerede PID == 0 ||' olması gerekiyor PID == 1 '? – 4thSpace