这条线:
input.Redeems
.Select(input2 => input2.SumChosenYear)
.ToList()
回报你一个列表,并因为名单没有实现IComparable你不能把这个拉姆达内this overload of OrderByDescending extension。
您有两种基本选择:
第一选项
Cretae的此列表您的自定义实现(假设SumChosenYear属性是用于此目的的一个int):
public class SumChosenYearListComparer : IComparer<List<int>>
{
public int Compare(List<int> x, List<int> y)
{
//Your custom comparison...
}
}
然后与this overload of OrderByDescending extension一起使用:
var result = result
.OrderByDescending(input => input.Redeems
.Select(input2 => input2.SumChosenYear)
.ToList(), new SumChosenYearListComparer())
.Take(20)
.ToList();
第二个选项
你可以选择你想在比较(也许最大值,最小值,第一个或最后一个值或可能所有的项目甚至总和)使用在这个列表项。
假设你想使用该列表中的最大值,你的代码可能看起来像这comapre:
var result = result
.OrderByDescending(input => input.Redeems
.Max(input2 => input2.SumChosenYear))
.Take(20)
.ToList();
'OrderByDescending'想'IComparable'(在顺序排序,你要比较);但是你返回'List''或者'... Select(input2 => input2.SumChosenYear).ToList()'。两个'List '不能在默认情况下进行比较(什么是较大的[[1,2,3]或者[0,4,7]?) –
点,这是完全合理的。那我怎么去订购那个领域呢? “SumChosenYear”字段只是一个小数,因此在我的结尾列出它是一个问题。在SumChosenYear的总和中列出一个字段“Redeem”是否是一个想法? – Jannik
变量结果中有多少行。几周前我收到了同样的错误,并发现列表为空。 – jdweng