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

时间:2016-11-05 04:23:09

标签: c# css asp.net asp.net-mvc generics

我在我的一个应用程序的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();
}

2 个答案:

答案 0 :(得分:2)

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

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

并按照以下方式实施:

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

虽然坦率地说,除非您有特定的理由需要通过int索引访问配对,否则我强烈建议您使用字典。

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

答案 1 :(得分:0)

您应该使用struct / class,然后将该类/结构的IEnumerable传递到您的视图中。此外,仅供将来参考,List<KeyValuePair>dictionary相同。

更新:从功能上讲,这两者实际上并不相同,但字典更适合OP试图完成的事情。