我有这样的结构:
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语句有一种简单的方法吗?
答案 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)
});
}