首页 > 解决方案 > 使用 Linq 对数据表进行分组会产生错误:“方法定义在这种情况下无法访问”

问题描述

我正在尝试使用 Linq 和 VB.NET 2017 从数据表中获取不同的用户名。我已经阅读了很多文章但无法解决问题这是错误:

在此上下文中无法访问方法 myGroup 的定义

这是我的查询

Dim users2 = From row As DataRow In ReportTable
             Group row By New With {.name = row.Item("user_name"), .code = row.Item("user_code")} Into myGroup '<-- Error
             Select myGroup

但它基于 Microsoft 参考描述的内容:

    var queryLastNames =
    from student in students
    group student by student.LastName into newGroup
    orderby newGroup.Key
    select newGroup;

https://docs.microsoft.com/en-us/dotnet/csharp/linq/group-query-results

标签: vb.netlinqdatatablegroup-byvisual-studio-2017

解决方案


Grouping说法不正确。分组的别名必须在分组前声明。在选择值之前myGroup声明然后分配使用。此外,在分组列之前Into Group错过了- 关键字。Key

        Dim users2 = From row As DataRow In dt.AsEnumerable()
                             Group row By myGroup = New With 
                             {
                              Key .name = row.Item("user_name"), 
                              Key .code = row.Item("user_code")
                             } Into Group
                         Select myGroup

VB.Net Fiddle 示例


推荐阅读