Ваш текущий способ может получить только другие данные, которые существуют в List1, но не в List2.
Чтобы получить все их различные данные, вам также нужно reverse except
и объединить их с помощью Union
.
Вот мой класс Продукт:
public class Product
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
Здесь это код:
List<Product> List1 = new List<Product>()
{
new Product(){ Id =1, Title="aaa", Description="cccccccc" },
new Product(){ Id =2,Title="bbb", Description="cccccccc" },
new Product(){ Id =3, Title="ccc", Description="cccccccc" },
};
List<Product> List2 = new List<Product>()
{
new Product(){ Id =1, Title="aaa" , Description ="csdfsdf"},
new Product(){ Id =4, Title="bbb" , Description ="cccccccccc"},
};
var newList= (List1.Select(x => new { x.Id, x.Title }).Except(List2.Select(x => new { x.Id, x.Title })).
Union(List2.Select(x => new { x.Id, x.Title }).Except(List1.Select(x => new { x.Id, x.Title })))).ToList();
Вот процесс тестирования: