我在我的一个应用程序的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();
}
答案 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试图完成的事情。