我从IEnumerable模型中包含的数据实体获取此数据
Address: "test"
AuctioneerId: 0
CharityId: 0
City: "test"
我想把它放在IDictionary<string. object>
中以获得标题地址和价值测试。
答案 0 :(得分:2)
让我们假设你有这样的课程:
class Test
{
public int Value1 { get; set; }
public string Value2 { get; set; }
}
Test
的实例。
var item = new Test { Value1 = 1, Value2 = "hey!!!" };
要将Dictionary<string, object>
的属性名称作为键,将值作为值,您可以使用反射:
var dict = item.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty)
.ToDictionary(p => p.Name, p => p.GetValue(item));
或向Test
添加方法并手动创建字典:
public Dictionary<string, object> ToDictionary()
{
return new Dictionary<string, object>() {
{ "Value1", Value1 },
{ "Value2", Value2 }
};
}
并使用它:
var dict = item.ToDictionary();
第二个将表现更好,但您必须手动将所有属性写入字典。但实际上,如果您只希望结果字典中存在值的子集,那么这可能是一件好事。