2013-04-18 5 views
0

У меня есть список объектовGroup и сумма список (vb.net)

Class Bundledtellingen 
     Property tTimestamp As String 
     Property tValue As Double 
    End Class 

Сейчас я пытаюсь группе этот список по tTimestamp и просуммировать TValue. При поиске похожих вопросов было ясно, что лучше всего использовать Linq. Я поставил это вместе:

Dim query = bundledlist.GroupBy(_ 
    Function(telling) telling.tTimestamp, _ 
    Function(telling) telling.tTimestamp, _ 
    Function(ts, values) New With _ 
     {.Key = ts, _ 
     .Sum = values.Sum()} _ 
    ) 

    Using writer As StreamWriter = New StreamWriter("C:\test.txt") 
     For Each result In query 
      writer.WriteLine(result.Key & " " & result.Sum) 
     Next 
    End Using 

Насколько я могу сказать, глядя на примеры в http://msdn.microsoft.com/en-us/library/bb534493.aspx#Y0 это должно работать, хотя я получаю следующее исключение: «разрешение перегрузки не удалось, поскольку не доступны„Сумма“не принимает это количество аргументов ".

ответ

0

Вы указали один ненужный параметр в своем вызове GroupBy. Thy that one:

Dim query = bundledlist.GroupBy(_ 
       Function(telling) telling.tTimestamp, _ 
       Function(ts, values) New With _ 
        {.Key = ts, _ 
        .Sum = values.Sum()} _ 
       ) 

Первый - это ключ, второй - селектор результатов.

Ваш вызов с тремя параметрами имеет дополнительный селектор значений, в котором вы выбираете Function(telling) telling.tTimestamp дважды - один раз для Key и один раз для Value. Вот почему ваш Sum не работал: вы пробовали позвонить Sum по телефону telling.tTimestamp.

+0

Привет, спасибо, что указал мне в правильном направлении. Мне только пришлось заменить вторую tell.tTestestamp на tell.tValue. – vandaemb

Смежные вопросы