如何将键值对(String,Object)列表转换为键值对(string,string)列表?
答案 0 :(得分:1)
使用LINQ,您可以执行以下操作:
var newList = oldList.Select(kv => new KeyValuePair<string, string>(kv.Key, kv.Value.ToString())).ToList()
当然,如果ToString表示是某种复杂类型,那么它可能并不完全符合您的预期,但您可以理解。
答案 1 :(得分:1)
List<KeyValuePair<string, object>> list = ...
List<KeyValuePair<string, object>> castedItemsList =
list
.Select(item => new KeyValuePair<string, string>(item.Key, item.Value.ToString()))
.ToList();
答案 2 :(得分:1)
如果值的类型为string,则可以将其强制转换为:
var result = source.Select(x => new KeyValuePair<string,string>(x.key,(string)x.value)
如果需要转换该值,您可以使用已建议的.ToString()或使用转换器函数。也许你的第二个对象是一个具有First和LastName属性的Person类,你想得到一个全名:
var result = source.Select(x => new KeyValuePair<string,string>(x.key, string.Format("{0} {1}", ((Person)x.Value).FirstName, ((Person)x.Value).SecondName))
当然,您可以使用方法来简化转化
var result = source.Select(Convert);
private KeyValuePair<string,string> Convert(KeyValuePair<string,object> pair)
{
var key = pair.Key;
var person = (Person)pair.Value;
var fullName = string.Format("{0} {1}", person.FirstName, person.LastName);
return new KeyValuePair<string,string>(key, fullName);
}
答案 3 :(得分:0)
您必须投射这些物体。