我有一个Object
的列表(它被称为:sourceList
)
Object
包含:Id,Num1,Num2,Num3,Name,Lname
假设我有以下列表:
1, 1, 5, 9, 'a', 'b'
1, 2, 3, 2, 'b', 'm'
2, 5, 8, 7, 'r', 'a'
如何返回另一个返回新列表的列表(object2
):
Id, sum of num1, sum of num2
对于上面的示例,它应该返回包含以下内容的object2
列表:
1, 3, 8
2, 5, 8
我试过了:
Dim a = sourceList.GroupBy(Function(item) item.Id).
Select(Function(x) x.Sum(Function(y) y.Num1)).ToList()
但我不知道如何总结num2
。
答案 0 :(得分:2)
您需要的是将匿名类型与初始化表达式相结合,这是LINQ以流畅的方式隐式执行的方式。例如,
Dim a = sourceList.GroupBy(Function(item) item.Id).
Select(Function(x) New With {.Id = x.Key,
.Sum1 = x.Sum(Function(y) y.Num1),
.Sum2 = x.Sum(Function(y) y.Num2),
.Sum3 = x.Sum(Function(y) y.Num3)}).ToList()
测试过这个似乎工作正常。 (等效的流利风格是
Dim fluent = (From item In sourceList
Group By item.Id Into Sum1 = Sum(item.Num1),
Sum2 = Sum(item.Num2),
Sum3 = Sum(item.Num3)).ToList()
这也很有效,可以说更容易阅读。)