LINQ中的嵌套GroupBy扩展方法

时间:2013-04-19 09:06:05

标签: c# .net linq

有人能给我看一个嵌套的GroupBy扩展方法的简单示例。我正在尝试将对象分组到列表中。我认为它看起来像这样:

//代码

List<stats> myStats = GetStatsList().GroupBy( d => d.date).GroupBy(t => t.team)
        Select(s => new stats
  {
        Date = 
        Team = 
 }).AsEnumerable().ToList();

3 个答案:

答案 0 :(得分:2)

这个怎么样:

    List<stats> myStats = GetStatsList()
                            .GroupBy(s => new { s.date, s.team })
                            .Select(g => new stats { Date = g.Key.date , Team = g.Key.team})
                            .AsEnumerable()
                            .ToList();

答案 1 :(得分:1)

我认为你想要这个:

List<stats> myStats = GetStatsList()
    .GroupBy(s => new{ s.Date, s.Team})
    .Select(g => new stats
      {
            Date = g.Key.Date,
            Team = g.Key.Team,
     }).ToList();

我正在按匿名类型对您要在不同GroupBy中使用的两个属性进行分组。然后我可以通过Group.Key.PropertyName访问它们。

答案 2 :(得分:1)

var myStats = (from s in GetStatsList()
               group by new { Date = s.date, Team = s.team} into g
               select g.Key).ToList();

请注意,这会为您提供List<T>,其中T是匿名类型 - 这可能就足够了。如果您明确需要List,那么:

var myStats = (from s in GetStatsList()
               group by new { s.date, s.team} into g
               select new stat { Date = g.Key.date, Team = g.Key.team}).ToList();