這條線:
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