【问题标题】:Datatable Grouping Using Linq and VB .NET使用 Linq 和 VB .NET 进行数据表分组
【发布时间】:2011-09-02 01:09:26
【问题描述】:

我在这里非常密集,但我正在尝试从 DataTable 中获取一些统计信息。数据表中的一列称为“颜色”。

我需要找出数据表中每个“颜色”实例的数量。

我正在尝试:

Dim q = From p In PGWorkingDataTable _
            Group p By p("colour") Into Group _
            Select Group

但我在设计时遇到编译器错误: “范围变量名称只能从不带参数的简单名称或限定名称中推断出来”在 p("colour") 部分。

我在这里需要一些认真的指导。感谢您的帮助。

【问题讨论】:

    标签: vb.net linq datatable grouping


    【解决方案1】:

    您需要为组键指定一个名称:

    From p In new DataTable() _
    Group p By Color = p("colour") Into Group _
    Select Group
    

    【讨论】:

    • 我原来在这个sn-p上遇到了代码完成错误,但现在它似乎编译得很好!谢谢!!
    【解决方案2】:

    在 VB.NET 中编写 LINQ 是没有人喜欢的事情。尝试以下方法:

    Dim q = From p In PGWorkingDataTable _
            Group By colour = p("colour") _
            Into colourCount = Count(p("colour")) _
            Select colour, colourCount
    

    【讨论】:

    • 我不断收到此错误:“从“浅灰色”到布尔值的转换无效。“浅灰色”当然是我的数据表颜色列中的值之一。任何进一步指针?
    • 基本上我需要获取这些结果并将它们绘制在 winforms 图表控件上。那么变量“q”现在本身就是一个数据表吗?或者我可以绑定到图表控件的东西?谢谢!
    • 您可以使用 LINQPad 查看实际结果吗?您应该得到一个匿名类型的 IEnumerable,其中包含每种颜色(颜色)及其出现的次数(颜色计数)——我只在该语法中提供了它,因为您在问题中使用了它。如果您想要 DataRows 本身,您可以使用@SLaks 的答案;我只是想你会想要这些数据。如果您愿意,最后一行可以读取Select New KeyValuePair(colour, colourCount),并且您可以将 q 声明为 KeyValuePairs 的 IEnumerable(或者您希望保留数据)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 2016-08-08
    • 2015-06-05
    • 1970-01-01
    相关资源
    最近更新 更多