2

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

有人可以帮我这样做吗?

4

3 回答 3

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))
}
于 2012-08-16T15:52:41.403 回答
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);
    }
}

(当然,或者你想对部门做的任何事情。)

于 2012-08-16T15:53:06.567 回答
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))})
于 2012-08-16T15:54:20.673 回答