根据计算排序键/对

本文关键字:计算排序 | 更新日期: 2023-09-27 18:07:49

我有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,除了一个值。

根据计算排序键/对

在前一个字典的基础上创建一个新字典,并使用您的自定义函数对列表进行排序,以计算列索引:

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

添加中间集合,其中您将拥有所需顺序的项目并实现两个循环,第一个将按您正在寻找的顺序填充集合,第二个循环将呈现表:

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