1

如何将键值对列表(字符串、对象)转换为键值对列表(字符串、字符串)?

4

4 回答 4

1

使用 LINQ,您可以执行以下操作:

var newList = oldList.Select(kv => new KeyValuePair<string, string>(kv.Key, kv.Value.ToString())).ToList()

当然,如果 ToString 表示是某种复杂类型,它可能并不完全符合您的期望,但您明白了。

于 2011-03-19T11:29:37.303 回答
1
List<KeyValuePair<string, object>> list = ...
List<KeyValuePair<string, object>> castedItemsList = 
 list
    .Select(item => new KeyValuePair<string, string>(item.Key, item.Value.ToString()))
    .ToList();
于 2011-03-19T11:29:43.483 回答
1

如果该值是字符串类型,则可以强制转换它:

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);
}
于 2011-03-19T12:08:24.727 回答
0

您将不得不投射这些对象。

于 2011-03-19T11:29:22.983 回答