這不是您典型的合併。我基本上有2個或更多的集合,我需要合併和項目的順序是重要的。每個集合的實例都將具有相同順序的項目,但項目可能會或可能不會在集合中。爲了演示我將使用數字,但在實際應用中,這些是對象。c#合併列表,但基於相對於這兩個列表中的項目的位置
collection_1 = [3,5,7,9]
collection_2 = [2,5,6]
collection_3 = [1,2,3,4,7,8]
After merge of collection 1 and 2 i am looking for
[3,2,5,6,7,9] or [2,3,5,7,9,6] or [3,2,5,7,9,6] are all correct
After merge above with collection 3
[1,2,3,4,5,6,7,8,9] (other variations possible)
這個想法是,我會給它一個集合一個接一個地合併,但它不需要中斷任何集合的順序。額外的項目可以在兩者之間添加,但順序必須相同。
我知道這是一個奇怪的情況,但它是用於代碼生成,其中類的屬性的順序必須是在一個特定的順序,所以他們得到序列化出來,他們進來了。如果一個屬性是沒有填充,那麼它不會被序列化,所以這就是爲什麼我可以在中間添加項目但不改變順序。爲了方便地以自動化的方式比較輸入和輸出,我需要它們以相同順序出來,否則它需要手動測試,我不想這樣做:)
---編輯---
試圖解釋它好一點。
我可以檢查的是,如果一個列表中的項目等於另一個列表中的項目。這些項目將不是上述數字的對象,也不能對其內容進行排序。排序/排序基於項目相對於兩個列表中的項目的順序。唯一能做到這一點的方法是知道一個列表是100%正確排列的,第二個列表是一個合併,因此可能會出現亂序。我的源列表將始終以相同的順序排列,所以當由於較早的合併而發生衝突時,可以將它們作爲真實點。
我也工作的一些可能的解決方案,但沒有運氣尚未
我很困惑,你怎麼能有'集合中1'合併集合後1和2 – paqogomez
這是很難理解您的需求。我沒有看到你如何確定3在第一次合併之前必須出現2,但在第二次合併之前2出現在3之前是可以的。你需要給我們一個更好的解釋。 –
@paqogomez是啊,這是一個錯誤,我已經刪除它 – Seer