将结果聚合为命名类型

时间:2013-06-26 13:02:53

标签: .net vb.net linq aggregate

我定义了一个命名类型 - 包含多个属性的总计。

现在我有一些总数回归到匿名类型:

Dim filteredList = Aggregate ts As Totals In empTot 
Where ts.Status = "Active" Into  
Tot1= Sum(ts.Tot1), Tot2= Sum(ts.Tot2)

我希望使用命名类型,方法与我在select中的方式相同:

Dim londonCusts5 = From cust In customers
                   Where cust.City = "London"
                   Order By cust.Name Ascending
                   Select New NamePhone With
                   {
                       .Name = cust.Name,
                       .Phone = cust.Phone
                   }

选择取自MSDN Linq Docs - Select Data Section

的示例

这在Aggregate语句中是否可行?

1 个答案:

答案 0 :(得分:0)

据我所知,您使用的LINQ语法是不可能的。但是,使用IEnumerable上的LINQ扩展方法,您可以实现此目的。

示例:

Class MyTotal
    Public Property Tot1 As Integer
    Public Property Tot2 As Integer
End Class

Dim filteredList = empTot.Where(Function(ts) ts.Status = "Active") _
                   .Aggregate(New MyTotal(), Function(mt, value)
                                                 mt.Tot1 += value.Tot1
                                                 mt.Tot2 += value.Tot2
                                                 Return mt
                                             End Function)