当ID匹配时,.NET合并来自数据行的单列

时间:2015-02-23 06:53:41

标签: asp.net .net vb.net linq dataset

提前,我无法访问所写的SQL查询,因此我所能做的就是在执行查询后尝试处理数据集。 我使用ASP.NET Webforms尝试在SQL返回的数据表中仅尝试合并一列,例如

PID | C1 | C2 | C3 | I1

1   | a  | a  | a  | bob

1   | x  | x  | x  | Jim

1   | b  | b  | b  | Fred

2   | g  | g  | g  | Jill

从这个数据集中我想看到:

PID | C1 | C2 | C3 | I1

1   | a  | a  | a  | bob Jim Fred

2   | g  | g  | g  | Jill

基本上我并不关心C1-C3中的内容,它只会取第一场比赛的值。我需要做的是将I1的所有值加入到基于匹配PID的一个结果中。

非常感谢任何帮助。 LINQ回答可以接受,最好是在vb.net中,所以我不必在以后更改它。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将group byString.Join一起使用。 Ia,我在c#添加了答案你可能想要转换为vb(我对vb语法不太了解:P)。

  var result = dataListObject.GroupBy(l =>  l.PId )
                 .Select(g => new { PID = g.Key.PId, C1= g.Key.C1, C2 = g.Key.C2, C3=g.Key.C3, I1 = string.Join(",", g.Select(i => i.I1)) });

应选择第一个PID,C1,C2和C3。然后加入I1。没有检查过这个,但似乎应该可以工作。

<强>更新 对于数据表,您可以将AsEnumerable()应用于数据表以使其可枚举

   var result = datatable.AsEnumerable().GrouBy(l=>l.Field<string>("Pid"))
               .Select(g=>new{PID = g.Key.PId, C1= g.Key.C1, C2 = g.Key.C2, C3=g.Key.C3, I1 = string.Join(",", g.Select(i => i.I1)) });