LINQ查询OrderByDescending无法识别lambda表达式

时间:2017-06-12 02:54:36

标签: c# linq group-by

我对LINQ很新,但我想我已经掌握了它。

我尝试对select语句进行分组,然后对其进行降序排序。我只是在查看其他问题,但是当我尝试附加OrderByDescending()函数时,我尝试添加的lambda表达式无法被intellisense识别。

var test = db.UserPokemons.Where(x => x.PkmnDataId == pokemon.Id && x.StepsToHatch == 0)
                          .GroupBy(n => n.User1.Country).OrderByDescending();

因此,例如,.OrderbyDescending(x => x.User1.Country)不包含User1的定义。

这与我的陈述的排序有关吗?我认为这是因为我在GroupBy之前呼叫OrderBy,但我无法解决如何解决问题。

我如何订购我的团体?

哦!差点忘了 - 我只想要前3个国家,所以有一个简单的方法来限制它吗?

  • 如何在同一LINQ函数中使用GroupByOrderByDescending
  • 如何仅选择前/前3组

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我认为这就是你想要的:

 var test = db.UserPokemons.Where(x => x.PkmnDataId == pokemon.Id && x.StepsToHatch == 0).
        GroupBy(n => n.User1.Country).Select(x=>x.First()).OrderByDescending().Take(3);

答案 1 :(得分:0)

var countriesInOrder = db.UserPokemons.Where(x => x.PkmnDataId == pokemon.Id && x.StepsToHatch == 0).
                GroupBy(n => n.User1.Country).OrderByDescending(x => x.Key).Take(3).ToArray();

知道了 - 分组后,lambda表达式需要转到x.Key。 (谢谢jitender!)