Как преобразовать список типов пары ключ-значение (из объекта в строку) - PullRequest
0 голосов
/ 19 марта 2011

Как преобразовать список пар ключ-значение (String, Object) в список пар ключ-значение (строка, строка)?

Ответы [ 4 ]

1 голос
/ 19 марта 2011

Если значение имеет тип string, вы можете просто привести его:

var result = source.Select(x => new KeyValuePair<string,string>(x.key,(string)x.value)

Если значение необходимо преобразовать, вы можете либо использовать .ToString (), как уже предлагалось, либо использовать функцию преобразователя. Возможно, ваш второй объект - это класс Person с свойством First и LastName, и вы хотите получить полное имя в результате:

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);
}
1 голос
/ 19 марта 2011

Используя LINQ, вы можете сделать что-то вроде этого:

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

Конечно, представление ToString может быть не совсем тем, что вы ожидаете, если это какой-то сложный тип, но вы поняли идею.

1 голос
/ 19 марта 2011
List<KeyValuePair<string, object>> list = ...
List<KeyValuePair<string, object>> castedItemsList = 
 list
    .Select(item => new KeyValuePair<string, string>(item.Key, item.Value.ToString()))
    .ToList();
0 голосов
/ 19 марта 2011

Вам бы пришлось разыграть эти объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...