如何在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());
}

如何在LINQ中使用groupby

也许你只需要从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,你将需要使用。