【发布时间】:2018-01-23 09:25:10
【问题描述】:
我有一个包含两列 ID 和角色的数据表。 同一个 ID 可以有多个角色。 我需要将此表转换为逗号分隔的分组表。 我正在尝试使用以下查询,但无法解决问题。
LINQ:
From row As DataRow In dtData.Rows.Cast(Of DataRow)
Group row By id = row.Field(Of Integer)("ID") Into Group
Select ID, Role = String.Join(",", From i In Group Select i.Field(Of String)("Role"))
我们将不胜感激。
更新1:
表结构
需要的表结构
【问题讨论】:
-
您的查询将返回您在
Select子句中指定的任何内容的通用IEnumerable。你没有在那里选择DataRows,所以你不会产生IEnumerable(Of DataRow)。不过,我真的不知道如何选择DataRows,因为您正在尝试返回包含来自多个DataRows的数据的项目。 -
谢谢@jmcilhinney 我正在检查接收对象数组的DataTable.LoadDataRow。我可以在 linq 中使用它来填充另一个 DataTable 并将 linq 的返回类型设置为对象吗?
-
类似
From row As DataRow In dtData.Rows.Cast(Of DataRow) Group row By id = row.Field(Of Integer)("ID") Into Group Select dtNew.LoadDataRow(New Object[] { ID, Role = String.Join(",", From i In Group Select i.Field(Of String)("Role")) }, False)