2013-10-25 10 views
0

я создаю два списка, как,Сравнить список в C#

  var list = new List<KeyValuePair<string, string>>(); 
      list.Add(new KeyValuePair<string, string>("1", "abc")); 
      list.Add(new KeyValuePair<string, string>("2", "def")); 
      list.Add(new KeyValuePair<string, string>("3", "ghi")); 


      var list2 = new List<KeyValuePair<string, string>>(); 
      list.Add(new KeyValuePair<string, string>("1", "abc")); 
      list.Add(new KeyValuePair<string, string>("2", "def")); 
      list.Add(new KeyValuePair<string, string>("3", "ghi")); 
      list.Add(new KeyValuePair<string, string>("4", "jkl")); 

      var unmatchedlist= new List<KeyValuePair<string, string>>(); 

как сравнить два lists.now мне нужно list.Add (новый KeyValuePair ("4", "JKL")); (потому что его нет в первом списке, но его можно использовать во втором списке) в непревзойденном списке?

+0

Это может помочь, если вы объясните, почему вы хотите это сделать. Как сейчас, 'list = list2;' будет решением (но я предполагаю, что это не то, что вы хотите). Кроме того, в вашем сравнении вы считаете, что два списка равны, если они имеют одинаковые элементы, но в другом порядке? –

ответ

0

Это поможет вам разницу между list2 и списком:

var unmatched = list2.Except(list); 

Затем просто добавить элементы в список, которые появляются в себе равных.

+0

Хорошая идея, но это должно быть по-другому. Я думаю :) – BartoszKP

+0

Похоже, что после того, как list2 объявлен, что больше элементов добавляется к более ранней переменной списка. Не уверен, что это правильно или нет. Но из этого OP может переключать вещи там, где это необходимо. – Ric

+0

Не имеет значения, как это выглядит - OP явно хочет сделать «list.Add», поэтому то, что отсутствует в «списке», представляет интерес :) – BartoszKP

0

Проверить этот путь

//This will be empty 
var difference1 = list1.Except(list2); 

Или другой способ Arround

//This will contain item 4 
var difference2 = list2.Except(list1); 
2

один из способов сделать это:

list1 = list1.Union(list2); 

ИЛИ:

list1.AddRange(list1.Except(list2)); 
Смежные вопросы