0

我有一个对象列表

    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上的示例,这应该可以工作,尽管我得到以下异常:“重载解析失败,因为没有可访问的 'Sum' 接受这个数量的参数。”

4

1 回答 1

0

您在GroupBy调用中指定了一个不必要的参数。你的那个:

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

第一个是键选择器,第二个是结果选择器。

带有 3 个参数的调用具有附加值选择器,您在其中选择Function(telling) telling.tTimestamp了两次 - 一次 forKey和一次 for Value。这就是你Sum没有工作的原因:你尝试了 call Sumon telling.tTimestamp

于 2013-04-18T06:38:43.243 回答