我是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());
}
答案 0 :(得分:1)
也许您需要从5到1等级排序?
var sorted = from c in mediaInv
where c.MediaType == "Movie"
orderby c.Rating descending
select c;
我不明白,为什么你需要分组。 您可以按评级对项目进行分组,但每个组都可以包含许多文件。那么,你打算怎么处理这些团体呢?只是按降序排列显示它们?所以,使用sort。
答案 1 :(得分:0)
对我个人而言,当我使用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
。