根据计算对密钥/对进行排序

时间:2013-04-05 08:23:54

标签: c# sorting dictionary

我有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";
        }
    }
}

因此,对于eData中的所有值,weight始终为0d,除了一个值。

2 个答案:

答案 0 :(得分:0)

根据前一个字典创建一个新字典,并使用自定义函数排序的列表来计算列索引:

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

答案 1 :(得分: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