如何转换键值对类型列表(从对象到字符串)

时间:2011-03-19 11:24:15

标签: vb.net-2010

如何将键值对(String,Object)列表转换为键值对(string,string)列表?

4 个答案:

答案 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)

您必须投射这些物体。