簡體   English   中英

C#通過將兩個列表組合在一起創建一個新列表

[英]C# Making a new list by combining two lists together

因此,我試圖找到如何最好地創建一個將兩個不同類型的兩個大小相等的列表組合在一起的列表,以使索引相同。 我怎樣才能做到這一點?

var list = new List<KeyValuePair<List<Card>, List<Card>>>();
list.AddRange(new List<KeyValuePair<List<Card>,List<Card>>>(_listCards,cloneOf_listCards));

上面的代碼是我嘗試使其工作的方式,其中Card是同時包含Suit和Cardnumber的類。 雖然我的代碼沒有執行此操作,但我希望將其設為包含圖片的列表,而不是Card的一個列表。 我已經看過這些和許多其他線程: c#中兩個列表的連接 https://stackoverflow.com/questions/16465804/return-two-combined-listt

您可以使用Enumerable.Zip擴展方法。

例如:

_listCards.Zip(cloneOf_listCards, (cardA, cardB) => new KeyValuePair<Card, Card>(cardA, cardB));

當然,這將為您提供一個List<KeyValuePair<Card,Card>>而不是KeyValuePair<List<Card>, List<Card>> ,但是我認為這還是一個更好的設計。

在這一點上(如果您願意的話),您可以將其變成Dictionary<Card,Card>

var joined = _listCards.Zip(cloneOf_listCards, (cardA, cardB) => new KeyValuePair<Card, Card>(cardA, cardB));
var dictionary = joined.ToDictionary(kv => kv.Key, kv => kv.Value);

請注意,如果列表大小不同,則Enumerable.Zip只會將元素連接到較短列表的末尾,然后停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM