3

私のクラスの 1 つのジェネリック リストが含まれてKeyValuePairいます。value

そのため、値ごとに 1 つの列を計算し、その値に基づいて表形式で表示します。

しかし、ここで私の問題は次のとおりです。値のリストごと0に、計算によって取得した列の値として1つの行が含まれています。

だから私はその価値を一番上に置きたいと思っています。しかし、今はどこにでもある可能性があります。

では、その計算に基づいてどのように並べ替えることができますか。

これが私のコードです:

 @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は常に0d1 つの値を除きます。

4

2 に答える 2

0

カスタム関数によって並べ替えられたリストを使用して、前の辞書に基づいて新しい辞書を作成し、列のインデックスを計算します。

var reshuffled = aClient.ESelectionDictionary.ToDictionary(
   kvp => kvp.Key,
   kvp => kvp.Value.OrderBy(CalculateColumnIndex)
);
于 2013-04-05T09:23:59.530 に答える
0

アイテムを目的の順序で配置する中間コレクションを追加し、2 つのループを実装します。最初に、探している順序でコレクションを設定し、2 番目のループでテーブルをレンダリングします。

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
于 2013-04-05T09:33:34.153 に答える