【问题标题】:LINQ grouping with count issue带有计数问题的 LINQ 分组
【发布时间】:2013-05-09 06:21:40
【问题描述】:

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

PC EC CC

ABC 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

任何想法我哪里出错了?谢谢!

【问题讨论】:

    标签: asp.net vb.net linq


    【解决方案1】:

    这里是方法语法,因为它对于查询语法来说太多了:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 2021-01-22
      相关资源
      最近更新 更多