1

キーと値のペア (文字列、オブジェクト) のリストをキーと値のペア (文字列、文字列) のリストに変換するにはどうすればよいですか?

4

4 に答える 4

1

値が文字列型の場合は、キャストできます。

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

値を変換する必要がある場合は、既に提案されているように .ToString() を使用するか、コンバーター関数を使用できます。2 番目のオブジェクトが 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 に答える
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 に答える
0

これらのオブジェクトをキャストする必要があります。

于 2011-03-19T11:29:22.983 に答える