3

私はデータの文字列を持っています:

Key1=Value1,Key2=Value2,KeyN=ValueN

文字列を分割しようとしています

List<KeyValuePair<string, string>>

私はこれを簡単に行うことができます:

List<string[]> values = item.Split( ',' ).Select( p => p.Split( '=' ) ).ToList();

しかし、それを KeyValuePair のリストに入れる方法がわかりません。私がこれまでに得た最も近いものは次のとおりです。

List<KeyValuePair<string, string>> values = item.Split( ',' )
.Select( p => new KeyValuePair<string, string>(){ p.Split( '=' ) } ).ToList();

しかし、それはまだ少しずれています:(

ループで簡単にできることはわかっていますが、練習すれば完璧になるので、Linqで機能させたいと思っています。こののような同様の質問の例をすでにかなり見てきましたが、それらの質問と私の質問の間の点をつなぐことができないようです。誤って重複を投稿してしまった場合はご容赦ください。

どんな助けでも本当に感謝します、ありがとう:)

4

3 に答える 3

1

これは古い質問であることは知っていますが、Googleで偶然見つけました。受け入れられた回答を使用して問題を解決しましたが、少し短縮しました。new { p, splittedP = p.Split('=') }その部分は必要ありません。p.Split('=')

var values = data.Split(',').Select(p=>p.Split('='))
              .Select(s => new KeyValuePair<string, string>(s[0], s[1]))
              .ToList();

キーが一意の場合は、次のようにすることもできます。

var values = data.Split(',').Select(p => p.Split('='))
              .ToDictionary(k => k[0], v => v[1]);

これははるかに短く、基本的に O(1) アクセスでリストを取得します。

(これは .NET 4.5 の場合です)

于 2016-03-30T12:48:42.243 に答える