2

C# を使用して LINQ 集計または groupby を使用して質問 reg があります。

次のようなユーザー 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 に基づいて、別のユーザー 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 に答える