【问题标题】:Adding extra value/parameter to KeyValue pair向键值对添加额外的值/参数
【发布时间】:2016-11-05 04:23:08
【问题描述】:

我在我的一个应用程序的View 中使用了以下List<KeyValue<string, int>>。它可以工作,但我正在尝试扩展它,如果可能,通过向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();
}

【问题讨论】:

  • 您在字典中使用 KeyValuePairs 列表的任何特殊原因?
  • 没有理由........
  • 您不能将第三个值添加到 KeyValuePair。您会发现这要容易得多,因为您只需使用包含您想要的 3 个属性的视图模型并将该模型的集合传递给视图

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


【解决方案1】:

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

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>();

【讨论】:

    【解决方案2】:

    您应该使用结构/类,然后将该类/结构的 IEnumerable 传递到您的视图中。此外,仅供参考,List&lt;KeyValuePair&gt;dictionary 相同。

    更新:在功能上,两者实际上并不相同,但是字典更适合 OP 试图完成的任务。

    【讨论】:

    • 不完全。 List 按顺序存储其数据并通过int 索引检索其值,而Dictionary 将其数据存储在哈希表中并通过指定类型的键检索其值。
    • @Abion47 是的,你是 100% 正确的!我选词不当。
    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2012-10-25
    相关资源
    最近更新 更多