VB.NET和LINQ - 在DataTable

时间:2016-04-18 16:55:29

标签: vb.net linq datatable group-by

我在这种类型的VB.NET中有一个DataTable:

"Yr","Mnth","Period","Amount"
2016, 1, 2016-01, 550.36
2016, 1, 2016-01, 9000.79
2015, 12, 2015-12, 10000.30
2015, 12, 2015-12, 20

我想要做的是使用LINQ聚合这些数据,就像在SQL语言中一样:

SELECT Yr, Mnth, Period, SUM(Amount) AS Amount
GROUP BY Yr, Mnth, Period;

我曾尝试在VB.NET中使用LINQ,但还没有能够做到正确。 有人可以给我一些见解吗? 谢谢。

2 个答案:

答案 0 :(得分:1)

Dim Amounts As New DataTable 'Your code to load actual DataTable here
Dim amountGrpByDates = From row In Amounts
                       Group row By dateGroup = New With {
                                                    Key .Yr = row.Field(Of Integer)("Yr"),
                                                    Key .Mnth = row.Field(Of Integer)("Mnth"),
                                                    Key .Period = row.Field(Of String)("Period")
                                               } Into Group
                       Select New With {
                                  Key .Dates = dateGroup,
                                      .SumAmount = Group.Sum(Function(x) x.Field(Of Decimal)("Amount"))}

我假设YrMnth的类型为Integer,Period字符串和Amount十进制。 如果它们与您的类型不同,请更改类型。

答案 1 :(得分:-1)

这是C#代码。

<style type="text/css">
.content {
    width: 98%;
    left: 1%;
    margin-top: -10px;
}
.block_1 {
    position: relative;
    width: 18.5%;
    height: 150px;
    margin-left: 1%;
    margin-top: 1%;
    float: left;
    background: #FFF;
    border: 3px solid #999;
}
</style>