提前,我无法访问所写的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中,所以我不必在以后更改它。
谢谢。
答案 0 :(得分:0)
您可以将group by
与String.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)) });