.net 使用linq从数据表中删除逗号分隔的值

.net 使用linq从数据表中删除逗号分隔的值,.net,vb.net,linq,.net,Vb.net,Linq,这是我的DataTable结构: srno. areaid areaName 1 1 Mumbai 2 1 Delhi 3 1 New York 4 2 Sydney 我想查询它,结果应该是: srno. areaid areaName 1 1 Mumbai,Delhi, New York 2 2 Sydney 这是我的疑问: Dim grouped = From row In a.A

这是我的
DataTable
结构:

srno. areaid areaName
1     1      Mumbai
2     1      Delhi
3     1      New York
4     2      Sydney
我想查询它,结果应该是:

srno. areaid areaName
1     1      Mumbai,Delhi, New York
2     2      Sydney
这是我的疑问:

Dim grouped = From row In a.AsEnumerable()
              Group row By id = row.Field(Of String)(areaid) Into Group
              Select id, areaName = String.Join(",", From i In Group Select i.Field(Of String)("areaName")) 
我得到的结果是:

结果=预期的类型


我做错了什么?

选择
语句中,您需要创建匿名类的实例

Dim grouped = 
    a.AsEnumerable().
      GroupBy(Function(row) row.Field(Of Integer)("areaid")).
      Select(Function(group, areaId)
                 Return New With
                 {
                     .AreaId = areaId,
                     .AreaNames = String.Join(",", group.Select(Function(row) row.Field(Of String)("areaName")))
                 }
             End Function)

正如法比奥指出的,关键是为返回创建一个Anon类型。但是可以通过在
GroupBy
方法中对其进行操作来跳过组选择

Dim grouped = dt.AsEnumerable().
        GroupBy(Function(row) row.Field(Of Integer)("AreaId"),
                Function(key, values) New With {
                    .Id = key,
                    .Names = String.Join(",", values.
                                      Select(Function(q) q.Field(Of String)("AreaName")))
                                               }
                ).OrderBy(Function(j) j.Id)

For Each item In grouped
    Console.WriteLine("{0}  {1}", item.Id, item.Names)
Next
我在表中添加了几个元素(2组不是一个好的测试),并且顺序不太整齐。结果是:

1孟买、德里、纽约
2悉尼
3巴黎,伦敦


没有兄弟,同样的问题!!我刚刚用你的代码更新了快照。你需要将“areaid”列的值强制转换为
整数。在您的代码中,您将其强制转换为
字符串
,并正确地提供列名作为字符串
“areaid”
,我认为这不是问题所在。我改变了它,但仍然没有成功。顺便说一下,当我从select中删除第二个冒号“areaName”时,我发布的查询返回了数据。所以我猜selectmy bad有点问题,你的解决方案非常有效!!!非常感谢。。我所做的唯一更改是.AreaId=group.Select(函数(行)row.Field(字符串)(“AreaId”),在使用我使用的值时。first@Sameer,AreId是组的一个键,因此可以在没有
group的情况下访问它。选择…