如何在LINQ中使用groupby
本文关键字:groupby LINQ | 更新日期: 2023-09-27 18:18:07
我是c#新手。对于我的作业,我必须从列表中显示按评级(5到1)分组的电影。
我使用了下面的查询,但是循环给出了我的参数
listBox1.Items.Clear();
var sorted = from c in mediaInv
where c.MediaType == "Movie"
group c by c.Rating into movieRankings
orderby movieRankings descending
select movieRankings;
//argumentexception here
foreach (var x in sorted)
{
listBox1.Items.Add(x.ToString());
}
也许你只需要从5到1排序?
var sorted = from c in mediaInv
where c.MediaType == "Movie"
orderby c.Rating descending
select c;
我不明白,你为什么要分组。您可以按等级对项目进行分组,但是每个组可以包含多个文件。那么,你打算怎么处理这些群体呢?只是按等级降序排列吗?所以使用sort
啊,对我个人来说,当我使用lambda表达式时,GroupBy
更容易理解。
listBox1.Items.Clear();
var sorted = mediaInv.GroupBy(k => k.Rating, v=>v)
.OrderByDescending(kv => kv.Key)
.ToList();
//argumentexception here
foreach (var x in sorted)
{
listBox1.Items.Add(x.Key.ToString());
}
基本上,x
等于KeyValuePair<TKey, TValue>
。所以它将有一个.Key
和.Value
,你将需要使用。