【发布时间】:2015-10-10 16:37:49
【问题描述】:
我已经看到了很多关于这个问题的答案,但是不幸的是,我无法将它们与我的特定场景联系起来,因为当我尝试在分组 LINQ 语句中连接字符串时,我受限于 @987654330 上的扩展重载@ 这似乎不起作用。
基本上,我在代码中有两个 DataTable,每个都有四个记录(所有字符串)。我需要按两列分组,然后用“,”分隔符连接其他两个字段。
这两个表的分组基础相同,但是分组在不同的列集上,所以我假设我也可以将解决方案应用于一个实例到另一个实例。
我在代码中有以下数据表:
我需要按 CONTACT 和 EMAIL 对这个 DataTable 进行分组,同时将 REFERENCE 和 ATTACHMENT 用 ', ' 分隔符连接起来,以生成以下数据集:
然后我有第二个 DataTable,我需要按 REFERENCE 和 ATTACHMENT 对它进行分组,同时用“,”分隔符连接 CONTACT 和 EMAIL。 DataSet 当前将包含以下数据:
我想用这个集合实现的是一个包含以下信息的 DataTable:
【问题讨论】:
-
你能用 DataTable 显示你用来分组的 linq 代码吗?还可以查看之前的帖子stackoverflow.com/questions/8472005/…
-
@MethodMan 我认为这是我正在寻找的解决方案之一,但是它只能按单列分组;当我涉及多个分组列时,似乎需要不同的语法。这是我正在使用的 LINQ 代码:
var FinalisedSingleContactMultipleReferences = from row in SingleContactMultipleReferences.AsEnumerable() group row by new { CONTACT = row.Field<string>("CONTACT"), EMAIL = row.Field<string>("EMAIL") } into grp select new { REFERENCE = grp.Join<", ", REFERENCE>, CONTACT = grp.Key.CONTACT, EMAIL = grp.Key.EMAIL, ATTACHMENT = grp.Join<", ", ATTACHMENT>} -
@Your_Unequal - 在上述查询中,
grp.Join不正确,因为它需要加入两个实体。正如我在答案中提到的那样,您需要String.Join。只需将REFERENCE = grp.Join<", ", REFERENCE>替换为REFERENCE = String.Join(",",grp.Select(z => z.Field<string>("REFERENCE")))