2013-06-26 4 views
1

У меня есть определенный тип имени - итоговые значения с несколькими свойствами.Совокупные результаты в Именованный тип

Сейчас у меня есть некоторые итоги возвращаются в анонимный тип:

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

Я хочу использовать поименованный тип таким же образом, что я могу сделать это в отборное:

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?

ответ

0

Насколько я знаю, это невозможно с использованием синтаксиса LINQ, который вы используете. Однако, используя методы расширения LINQ на IEnumerable, вы можете это сделать.

Пример:

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)