0

我有了在IEnumerable<AdjustmentErrorCodes> adjustmentErrorFile;從服務器端對錶進行排序時出錯:「至少有一個對象必須實現IComparable。」

AdjustmentErrorCodes共有23列被定義爲一個數據表:

public class AdjustmentErrorCodes 
{ 
    public AdjustmentErrorCodes(); 

    public string AdjustmentErrorCode { get; set; } 
    public string AdjustmentErrorCodesDescription { get; set; } 
    public **List<AdjustmentErrorDetails>** AdjustmentErrorDetails { get; set; } 
    public int AdjustmentErrorTypesKey { get; set; } 
} 

我想排序從Serverside集團任何列。如果它是爲SortColumn索引0或1,它工作正常。 我想從列表中的任何其他列進行排序,然後錯誤拋出返回a.AdjustmentErrorDetails.Select(b => b.CaseDisplayId); as
錯誤:「至少有一個對象必須實現IComparable。」 來源:mscorlib

任何人都有任何想法如何從清單中的列表進行排序。感謝您的建議。 謝謝你的時間。

Func<AdjustmentErrorCodes, object> orderingFunction = (a => 
        { 
         if (sortColumnIndex == 0) 
         { 
          return a.AdjustmentErrorCode; 
         } 

    else if (sortColumnIndex == 1) 
          return a.AdjustmentErrorCodesDescription; 

         else 
return **a.AdjustmentErrorDetails.Select(b => b.CaseDisplayId);** 

        }); 

回答

0

對於列0或1,你被一個單個值排序。沒關係。否則,您將按序列排序。那有什麼意思?如果一個AdjustmentErrorCode具有CaseDisplayIds{ 1, 5, 3 }的序列並且另一個具有{ 2, 4 }的序列,該序列應該優先?

請注意,您的排序肯定發生在您的.NET代碼中,數據庫中的而不是。那真的是你想要的嗎?

此外,我會建議,而不是在每次迭代檢查sortColumnIndex,您可以使用不同的lambda表達式:

Func<AdjustmentErrorCodes, object> orderingFunction; 
switch (sortColumnIndex) 
{ 
    case 0: orderingFunction = a => a.AdjustmentErrorCode; break; 
    case 1: orderingFunction = a => a.AdjustmentErrorCodeDescription; break; 
    default: orderingFunction = ...; 
} 

(或寫該交換機聲明,回報值的方法,並調用它搭配:

var orderingFunction = CreateOrdering(sortColumnIndex); 

這樣的分配可以變成return語句,你可以失去break;聲明:)

相關問題