我在尝试使用计数正确分组LINQ查询时遇到问题。作为一个例子,我试图用以下数据查询数据表:
PC EC CC
ABC XXX US
ABC XXX CA
ABC XXX UK
DEF YYY US
DEF YYY CA
DEF YYY UK
DEF ZZZ US
DEF ZZZ CA
DEF ZZZ UK
HIJ AAA US
HIJ AAA CA
HIJ AAA UK
我想使用count函数显示每个PC值的不同EC值,删除CC中的值。换句话说,上述数据集的结果应为:
PC 计算EC
ABC 1
DEF 2
HIJ 1
我已经尝试了几种不同的方法来获得这个结果,但我一直在撞墙。我的最后一次尝试看起来像这样:
Dim test = From r In ( _
From s In Base _
Group By s.Base_PC, _
s.Base_EC _
Into g = Group) _
Group r By key = New With {r.Base_PC} _
Into Group _
Select key.Base_PC, Group.Count
我出错的任何想法?谢谢!
答案 0 :(得分:2)
这里是方法语法,因为它对查询语法来说太多了:
Dim counts = base.AsEnumerable().
GroupBy(Function(r) r.Field(Of String)("PC")).
Select(Function(g) New With {
.PC = g.Key,
.CountEC = g.Select(Function(r) r.Field(Of String)("EC")).
Distinct().
Count()
})
For Each x In counts
Console.WriteLine("PC={0} Count of distinct EC's={1}", x.PC, x.CountEC)
Next
首先,您需要按“PC”列进行分组,然后选择一个匿名类型,其中包含组的键和“EC”列的不同值的计数。