LINQ建议C#

时间:2012-08-16 15:48:24

标签: c# linq

我有一个问题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

有人可以帮我这么做吗?

3 个答案:

答案 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))})