Сравнить два 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();
}
}
}