Сравнить два List<>, которые не одинаковы по размеру - C#
Формулировка задачи:
Добрый день! Помогите советом.
Мне нужно сравнить два List<>, которые не одинаковы по размеру и мне нужно точно знать, какие элементы в них не совпадают.
Написал вот такую штуку, но не совсем понимаю как она работает и как мне сделать наоборот.
Но в переменной res хранятся только те значения, которые совпадают.
Т.е.
Лист 1 Лист 2
1 1
2 2
3 3
4 999
То в res будет 1 2 3. А мне нужно наоборот, чтобы было 999. Подскажите как это сделать?
Заранее благодарен!
Замечу, что я использую класс CSV в котором есть три поля: index, value и type.
public List<CSV> ActualList = new List<CSV>(); public List<CSV> values = new List<CSV>(); var res = values.Cast<CSV>().Join(ActualList.Cast<CSV>(), ActualListik => new {Id=ActualListik.index}, l2 => new {Id=l2.index}, (ActualListik, l2)=> new { result = ActualListik.index }).ToList();
Решение задачи: «Сравнить два List<>, которые не одинаковы по размеру»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<CSV> ActualList = new List<CSV>() { new CSV(){Index=1,Type="Type_1",Value=1}, new CSV(){Index=2,Type="Type_2",Value=2}, new CSV(){Index=3,Type="Type_3",Value=3}, new CSV(){Index=4,Type="Type_4",Value=4}, new CSV(){Index=5,Type="Type_5",Value=5} }; List<CSV> OldList = new List<CSV>() { new CSV(){Index=1,Type="Type_1",Value=1}, new CSV(){Index=2,Type="Type_2",Value=2}, new CSV(){Index=6,Type="Type_6",Value=6} }; var result = OldList.Except(ActualList, CSV.MyComparer); foreach (var item in result) Console.WriteLine(item); Console.ReadLine(); } } class CSV { public int Index { get; set; } public int Value { get; set; } public string Type { get; set; } public static Comparer MyComparer { get { return new Comparer(); } } public override string ToString() { return string.Format("Index: {0}, Type: {1}, Value: {2}", Index, Type, Value); } } class Comparer : IEqualityComparer<CSV> { public bool Equals(CSV x, CSV y) { return x.ToString() == y.ToString(); } public int GetHashCode(CSV obj) { return obj.ToString().GetHashCode(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д