2017-06-24 32 views
0

我使用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)); 

我得到_nameDetails和_valDetails結果爲s以下圖片3 enter image description here hown和4 enter image description here

使用下面的代碼轉換成JSON

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

我得到所示的結果在image1的enter image description here

但我需要一個輸出如圖圖像2 enter image description here

任何幫助,懇請讚賞。 謝謝

+0

[JSON序列化列表的可能的複製>](https://stackoverflow.com/questions/21021655/json-serialize-listkeyvaluepairstring-object) – mjwills

+0

https://stackoverflow.com/questions/41503024/serialize-listkeyvaluepairstring-string-as-json可能如果您可以使用字典,而不僅僅是KeyValuePair序列,則可以使用。 – 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」,...}

+0

你的代碼適合我。謝謝。 – shyam

+0

我面臨着一個錯誤說 - 「具有相同的鍵的項已被添加」。我正在使用一個foreach循環,所以第一次它的工作正常,但在第二次迭代它是拋出錯誤。有什麼辦法可以在使用Zip時處理錯誤? – shyam

+0

@shyam我不知道直接。你可以問一個新的問題 – NtFreX