1

我在尝试将 LINQ 查询与计数正确分组时遇到问题。例如,我正在尝试使用以下数据查询数据表:

个人电脑 EC CC

美国广播公司 XXX

ABC XXX CA

ABC XXX 英国

DEF YYY 美国

DEF YYY CA

DEF YYY 英国

DEF ZZZ 美国

DEF ZZZ CA

DEF ZZZ 英国

HIJ AAA 美国

HIJ AAA CA

HIJ AAA 英国

我想使用 count 函数来显示每个 PC 值的 EC 不同值的数量,删除 CC 中的值。换句话说,上述数据集的结果应该是:

PC 计数 EC

ABC 1

防御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

有什么想法我哪里出错了吗?谢谢!

4

1 回答 1

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”列的不同值计数的匿名类型。

于 2013-05-14T20:35:30.180 回答