我有一个问题reg使用LINQ聚合或groupby使用C#
我有一个用户IList:
Name--dept--age--sex
n1--d1--22--M
n1--d2--22--M
n2--d4--23--F
n2--d2--23--F
n3--d5--21--F
基于上面的IList,我想以下列格式生成另一个User IList。
Name--age--sex--concatdept
n1--22--M--d1,d2
n2--23--F--d4,d2
n3--21--F--d5
有人可以帮我这么做吗?
答案 0 :(得分:4)
from u in users
group u by new { u.Name, u.Age, u.Sex } into g
select new
{
g.Key.Name,
g.Key.Age,
g.Key.Sex,
string.Join(",", g.Select(u1 => u1.dept))
}
答案 1 :(得分:2)
所以你只想按姓名,年龄和性别对部门进行分组?听起来像你想要的:
var query = people.GroupBy(person => new { person.Age, person.Sex },
person => person.Department);
foreach (var group in query)
{
Console.WriteLine(group.Key);
foreach (var department in group)
{
Console.WriteLine(" {0}", department);
}
}
(或者当然你想对部门做什么。)
答案 2 :(得分:0)
userList
.GroupBy(u => u.Name)
.Select(g=>new{group = g, first = g.First()})
.Select(x=>
new
{
x.first.Name,
x.first.Age,
x.first.Sex,
concatdept = string.Join(",", x.group.Select(xx => xx.Dept))})