我有一个数据表(从xls文件填充),含有不同种类的水果和豆类。
我从这个数据表中创建一个数据视图,并使用RowFilter只有土豆和西红柿。
现在,我尝试制作一个群组(使用列'名称')并从另一列'数量'中进行总结。
实际上:
Name | Quantity | color
tomatoe | 2 | red
tomatoe | 1 | red
potatoe | 5 | yellow
tomatoe | 1 | red
potatoe | 1 | yellow
我会返回这样的数据表或数据视图:
Name | Quantity | color
tomatoe | 4 | red
potatoe | 6 | yellow
我该怎么做?
很抱歉,如果这很简单,但我也是那么。
答案 0 :(得分:2)
使用Linq-To-DataTable
,在这种情况下Dim fruitGroups = table.AsEnumerable().GroupBy(Function(row) row.Field(Of String)("Name"))
:
Dim tableResult = table.Clone() ' empty table with same columns
For Each grp In fruitGroups
tableResult.Rows.Add(grp.Key, grp.Sum(Function(row) row.Field(Of Int32)("Quantity")), grp.First().Field(Of String)("Color"))
Next
现在您可以创建结果表:
Name
这将采用每组的任意颜色(第一组)。因此,如果您希望按Color
和Dim fruitGroups = table.AsEnumerable().
GroupBy(Function(row) New With {
Key .Name = row.Field(Of String)("Name"),
Key .Color = row.Field(Of String)("Color")
})
Dim tableResult = table.Clone()
For Each grp In fruitGroups
tableResult.Rows.Add(grp.Key.Name, grp.Sum(Function(row) row.Field(Of Int32)("Quantity")), grp.Key.Color)
Next
的组合进行分组,则必须按匿名类型进行分组:
DataView
如果您需要tableResult.DefaultView
,可以使用$username = 'testName';
$password = '1234567';
$secret = 'yoursecret';
。