使用Linq Group By返回表或列表

时间:2014-08-11 11:22:20

标签: vb.net linq

我有一个带有月份和金钱列的输入数据表。我的目标是获得一个可以绑定到dgv(表或列表)的对象,其中的钱按月分组。

在SQL中,我将用

完成此任务
Select month, sum(money) from table
group by month

我尝试过(根据this question

Public Function Get Overview(...)

dim query = 
from dt In _dataset.Table.AsEnumerable() 
Group By dt.Week 
Into Test = Sum(dt.money) 
Select Test

Return Test
End Function

我不能运行这个但返回类型是IEnumerable(of Double)所以对我来说它看起来我没有得到我可以绑定到我的dgv的表或列表。谁能告诉我我的查询有什么问题?

编辑: 这是Linq to数据集。

声明和实例

Privat _dataset as Dataset1
Private _adapter as New Dataset1TableAdapters.Table
_dataset = New Dataset1
_adapter.Fill(_dataset.Table)

1 个答案:

答案 0 :(得分:2)

使用Select Test,您只需明确选择money列的汇总值。

您的查询应如下所示:

Dim query = From dt In _dataset.Table.AsEnumerable() 
            Group By week = dt.Week 
            Into result = Sum(dt.money) 

请注意,这会产生任何类型的IEnumerable(Of ...)。如果要在当前方法之外使用结果,请创建表示此结果的类型或使用例如Tuple类,如:

Dim query = From dt In _dataset.Table.AsEnumerable() 
            Group By week = dt.Week 
            Into result = Sum(dt.money) 
            Select Tuple.Create(week, result)

这会产生IEnumerable(Of Tuple(Of TheTypeOfWeek, TheTypeOfMoney)),您可以绑定到您的DGV。