我对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个国家,所以有一个简单的方法来限制它吗?
GroupBy
和OrderByDescending
感谢您的帮助!
答案 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!)