小组和总额清单(vb.net)

时间:2013-04-18 06:31:56

标签: vb.net linq group-by

我有一个对象列表

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

现在我试图通过tTimestamp和sum 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'接受此数量的参数。”

1 个答案:

答案 0 :(得分: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两次 - 一次用于Key,一次用于Value。这就是您的Sum无效的原因:您尝试在Sum上致电telling.tTimestamp