向KeyValue对添加额外的值/参数

本文关键字:参数 KeyValue 添加 | 更新日期: 2023-09-27 18:16:37

我有以下List<KeyValue<string, int>>,我在我的一个应用程序的View中使用。它的工作,但我试图扩展它,如果可能的话,通过添加一个额外的参数/值KeyValue对。

每一对都有一个特定的颜色,我想传递给内联css颜色属性。我希望能够做这样的事情:

 @foreach (var item in Model)
 {
     var result = MyClass.GetOrder(item);
     <h2>@item.Date.Substring(0,4)</h2>
     <p style="color:@result[0].Value3">@result[0].Key , @result[0].Value</p>
     <p style="color:@result[0].Value3">@result[1].Key , @result[1].Value</p>
     <p style="color:@result[0].Value3">@result[2].Key , @result[2].Value</p>
     <p style="color:@result[0].Value3">@result[3].Key , @result[3].Value</p>                   
 }

静态方法
public static List<KeyValuePair<string, int>> GetOrder(MyClass myclass)
{
    var NameVal = new List<KeyValuePair<string, int>>()
    {
        new KeyValuePair<string, int>(myclass.Name1, Convert.ToInt32(myclass.Val1)),
        new KeyValuePair<string, int>(myclass.Name2, Convert.ToInt32(myclass.Val2)),
        new KeyValuePair<string, int>(myclass.Name3, Convert.ToInt32(myclass.Val3)),
        new KeyValuePair<string, int>(myclass.Name4, Convert.ToInt32(myclass.Val4))
    };
    var result = NameVal.OrderByDescending(key => key.Value);
    return result.ToList();
}

向KeyValue对添加额外的值/参数

只需将您想要的值包装在数据结构中,然后将其用作KeyValuePair的"Value"部分的类型。

public class Data
{
    public int IntValue;
    public string StringValue;
    public bool BoolValue;
}

并像这样实现它:

var list = new List<KeyValue<string, Data>>();

尽管坦率地说,除非您有特定的原因需要通过int索引访问对,否则我强烈建议您只使用Dictionary。

var dict = new Dictionary<string, Data>();

你应该使用一个结构体/类,然后将这个类/结构体的IEnumerable传入你的视图。此外,仅供将来参考,List<KeyValuePair>与字典是一样的。

Update:从功能上讲,这两者实际上是不一样的,但是字典更适合OP试图完成的任务。