2011-11-14 15 views
6

私はLinqを初めて使っています。Linqは1つのステートメントで1回だけ関数を呼び出す

dict = fullGatewayResponse. 
Split(',').ToDictionary(key => key.Split('=')[0], value => value.Split('=')[1]) 

これは正常に動作しますが、私は二度呼び出されるスプリット()メソッドを使用しない明白な理由:私はこのような何かを持っています。 どうすればいいですか?

すべてのお返事ありがとうございます:)しかし、私は1つしか選択できません。

+0

を保存するのいずれかのポイントがあると思いませんが、あなたは私たちに、文字列の構造を示すことができるfullGatewayResponse? – Tudor

答えて

12

あなたはSelectを使用してToDictionary前に配列に各項目を変換することができます:

dict = fullGatewayResponse.Split(',') 
          .Select(item => item.Split('=')) 
          .ToDictionary(keySelector:  parts => parts[0], 
             elementSelector: parts => parts[1]); 
+0

+1しかし、私の心を読んで停止してください:) – leppie

8
dict = (from item in fullGatetayResponse.Split(',') 
     let pair = item.Split('=') 
     select pair).ToDictionary(x => x[0], x => x[1]); 

か、あなたは隠された配列の存在を維持したい場合:

dict = (from item in fullGatetayResponse.Split(',') 
     let pair = item.Split('=') 
     select new{Key=pair[0],Value=pair[1]).ToDictionary(x=>x.Key,x=>x.Value); 
+1

私はクエリの構文を好むいくつかのスポットの1つ – sehe

4

試してみてください:

dict = fullGatewayResponse.Split(',') 
     .Select(y => y.Split('=')) 
     .ToDictionary(y => y[0], x => x[1]) 
+0

を削除してください。正確な重複解答。 – leppie

+2

ええと...なぜ誰かがダウン投票したのですか?投票を停止する理由を記入してください。答えに何か問題はありますか? –

+0

私は投票を辞退し、投票を元に戻しました。私の最初のコメントはまだ通ります。正確な重複解答。 – leppie

0

これは動作しますが、私は分割操作

var dict = fullGatewayResponse.Split(',') 
       .Select(i=>i.Split('=')) 
       .ToDictionary(key=>key[0],value=>value[1]); 
+0

申し訳ありませんが、私がこれを入力していた時まで、多くの人が同じ答えを出しました。 – Protean

関連する問題