2011-10-04 72 views
0

我有對象的集合。我需要用困難的條件對它進行排序,使用許多屬性和計算。我的解決方案是定義對象特殊的int屬性,返回值,即OrderBy肩負。這個解決方案不夠好。
對於例如,收集應首先由State屬性排序,那麼如果State = 1,通過Value1屬性,如果State = 2,通過Value2物業等。
建議,請解決一些問題。集合的自定義排序

+0

@Baszz,感謝您的建議,但哪裏有可能誤解?我提供了一個小例子,我必須處理,並且已經有3個令人滿意的答案。 –

+0

好的,我刪除它並再次提高。 –

回答

2

您可以通過使用OrderBy第一個嚴格的標準和使用ThenBy後鏈接的其他標準命令由多個條件的集合。

你的第一個準則是簡單地按照國有財產命令。你的第二個標準取決於國家財產;假設值1,值等有相同的類型,你可以使用一個switch語句來選擇合適的值:

IEnumerable<MyClass> result = items 
    .OrderBy(item => item.State) 
    .ThenBy(item => 
    { 
     switch (item.State) 
     { 
      case 1: return item.Value1; 
      case 2: return item.Value2; 
     } 
     throw new Exception(); 
    }); 
0

您可以使用IComparer類;
只需將上面給出的所有邏輯放入其比較方法即可。