LINQ挑战赛

时间:2011-01-14 22:41:33

标签: c# linq

我有这样的结构:

 public struct MyStruct
 {
     public string Name;
     public bool Process;
 }

我有一个myStruct列表:

  

“123”,真实

     

“123”,false

     

“234”,真实

     

“345”,假

     

“456”,真的

     

“456”,错误

我希望能够使用LINQ返回这样的列表:

  

“123”,false

     

“234”,真实

     

“345”,假

     

“456”,错误

所以基本上我想要的结果是一个不同名称的列表(“123”,“234”,......等)以及布尔标志,如果名称重复,我需要对其进行“AND”操作国旗。

使用单个LINQ语句有一种简单的方法吗?

2 个答案:

答案 0 :(得分:10)

var result = input.GroupBy(e => e.Name)
                  .Select(gr => new { Name = gr.Key,
                                      All = gr.All(e => e.Process) });

答案 1 :(得分:1)

public struct MyStruct
{
     public string Name;
     public bool Process;
}    

public void LinqCellenge()
{
   var sourceList = Enumerable.Empty<MyStruct>();

    var resultList = sourceList
      .GroupBy(item => item.Name, (name, values) => new MyStruct()
        {
          Name = name,
          Flag = values.All(x => x.Flag)
        });
}