2013-04-05 43 views
3

我有KeyValuePair其中value包含我的一個類的通用列表。基於計算排序鍵/對

因此對於每個值我計算一列,並基於該值我以表格格式顯示它。

但是這裏我的問題是:對於每個值列表,它包含一行0作爲我通過計算得到的列值。

所以我希望這個值在最上面。但現在它可以在任何地方。

那麼我怎麼能根據這個計算來排序?

這裏是我的代碼:

@foreach (KeyValuePair<String, List<MyClass>> keyValuePair in aClient.ESelectionDictionary) 
{ 
    foreach (MyClass eData in keyValuePair.Value) 
    { 
     string weight; 
     ............ 
     //Here comes some calculations 
     ............ 
     if (weight == 0d) 
     { 
      addclass = "class=hidden"; 
     } 
     else 
     { 
      addclass = "class=main"; 
     } 
    } 
} 

所以這裏的所有值eDataweight總是0d除了一個值。

+0

您可以發佈您的代碼嗎? – 2013-04-05 08:26:11

+0

「對於每個值我計算一列」 - 你是指什麼列? – Dennis 2013-04-05 08:29:27

+0

我們需要根據您的帖子進行計算來進行排序,那麼您可以將計算結果發佈嗎? – LukeHennerley 2013-04-05 08:33:50

回答

0

創建基於前一個與該列表由您的自定義功能責令計算列索引的新詞典:

var reshuffled = aClient.ESelectionDictionary.ToDictionary(
    kvp => kvp.Key, 
    kvp => kvp.Value.OrderBy(CalculateColumnIndex) 
); 
0

添加中間收集那裏你將有所需順序的項目,實行兩個循環,首先會按照您要查找的順序填充集合,第二個循環將渲染表格:

var list = new List<MyClass>(keyValuePair.Value.Count); 

foreach (MyClass eData in keyValuePair.Value) 
{ 
    string weight; 
    ............ 
    //Here comes some calculations 
    ............ 
    if (weight == 0d) 
    { 
     list.Insert(0, eData); 
    } 
    else 
    { 
     list.Add(eData); 
    } 
} 

foreach (var eData in list) 
    // render eData into table