按多列分组并计算它

时间:2014-12-09 09:03:10

标签: vb.net

我有一个列表(sourceList),例如:

id      price1    price2    Data
---------------------------------
12       88        222        1
12       88        222        4
12       66        234        4

我需要按以下三列分组:idprice1price2

Data没有任何意义。

我需要获取这个新列表:

id    numOfAds    price1    price2
----------------------------------
12       2          88        222   -> 2 cause there are two simmilar ads with the same price 1 and 2
12       1          66        234

所以我试过了:

Dim oResult = sourceList.GroupBy(Function(v) New With 
              {Key v.id, Key v.price1, Key v.price2}).ToList()

但我不知道如何计算相等的行..

编辑:

也许是这样的?

Dim sums = sourceList.GroupBy(Function(x) New With {Key x.id, Key 
            x.price1, Key x.price2}) _
            .Select(Function(group) New With {Key .Peo = group, Key .NumOfAds = group.Count()})

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

我认为您的问题可能是New with语句。

试试这个

Dim sums = sourceList.AsEnumerable().GroupBy(Function(x) x.Field(Of String)("YourField")).Where(Function(g) g.Count() > 1).Select(Function(g) g.Key)

This SO thread也可能对您的需求有所帮助。