2010-10-05 70 views
2

我有以下列表:幫助在LINQ查詢與GROUP BY

1: true; 
2: false;  
2: true; 
3: false; 
3: false; 
3: false; 

我想LINQ查詢得到一個集合,如下所示:

鍵,或者操作分組的項目之間,爲例如:

2: false | true = true 

結果必須是:

1: true 
2: true 
3: false 

在此先感謝

回答

3
// my sample data 
var list = new[] { 
    new {key = 1, value = true}, 
    new {key = 2, value = false}, 
    new {key = 2, value = true}, 
    new {key = 3, value = false}, 
    new {key = 3, value = false}, 
    new {key = 3, value = false}, 
}; 
// the actual code 
var groups = from pair in list 
      group pair by pair.key into grp 
      orderby grp.Key 
      select new { 
       grp.Key, 
       Value = grp.Aggregate(false, (x, y) => x || y.value) 
      }; 
// display the result 
foreach (var grp in groups) 
{ 
    Console.WriteLine("{0}: {1}", grp.Key, grp.Value); 
} 

注意你也可以使用Any做骨料,其優點是它會短路越早:

 select new { grp.Key, Value = grp.Any(y => y.value) };