2017-06-24 4 views
0

私は同じ数の2つのリストを結合するためにZipを使用しています。Zipを使用してキー値に変換する

List<NameDTO> _nameDetials = new List<NameDTO>(); 
List<ValDTO> _valDetials = new List<ValDTO>(); 
var combined = _nameDetials 
    .Zip(_valDetials, (name, val) => new KeyValuePair<NameDTO, ValDTO>(name, val)); 

下の画像でenter image description here hown JSON

var jsonSerialiser = new JavaScriptSerializer(); 
var json = jsonSerialiser.Serialize(combined); 

に変換するコードの下に使用される3および4 enter image description here

は私が示した結果を取得していますよと私は_nameDetailsと_valDetailsの結果を得ます画像1 enter image description here

しかし、画像2のように出力が必要です。 enter image description here

ご協力いただきありがとうございます。 ありがとう

+0

可能な重複文字列、オブジェクト>>](https://stackoverflow.com/questions/21021655/json-serialize-listkeyvaluepairstring-object) – mjwills

+0

https://stackoverflow.com/questions/41503024/serialize-listkeyvaluepairstring-string-as-json may単にKeyValuePairのシーケンスではなく、Dictionaryを使用できる場合に使用してください。 – mjwills

答えて

4

ZipコールをToDictionaryコールで延長することができます。

var combined = _nameDetials 
    .Zip(_valDetials, (name, val) => new { name.Name, val.Val }) 
    .ToDictionary(x => x.Name, x => x.Val); 

var jsonSerialiser = new JavaScriptSerializer(); 
var json = jsonSerialiser.Serialize(combined); 

これは、次のJSON

{ "アカウント-IND": "A"、...}になります[JSON Serializeを一覧

+0

あなたのコードは私のために働いた。ありがとう。 – shyam

+0

"同じキーを持つアイテムが既に追加されています"というエラーが出ます。 foreachループを使用していますので、最初は正常に動作していますが、2回目の反復ではエラーが発生しています。 Zipの使用中にエラーを処理できる方法はありますか? – shyam

+0

@shyam私はそれを直接知りません。あなたは新しい質問をすることができました – NtFreX

関連する問題