向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();
}
只需将您想要的值包装在数据结构中,然后将其用作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试图完成的任务。