If you have 2 collections and you need to figure out what values are in one collection and not in the other, you can do this:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { List<SomeType> _List1 = new List<SomeType>(); List<SomeType> _List2 = new List<SomeType>(); _List1.Add(new SomeType { Id = 1, Name = "Test1", Value = "Value1" }); _List1.Add(new SomeType { Id = 2, Name = "Test2", Value = "Value2" }); _List1.Add(new SomeType { Id = 3, Name = "Test3", Value = "Value3" }); _List1.Add(new SomeType { Id = 4, Name = "Test4", Value = "Value4" }); _List2.Add(new SomeType { Id = 1, Name = "Test1", Value = "Value1" }); _List2.Add(new SomeType { Id = 2, Name = "Test2", Value = "Value2" }); _List2.Add(new SomeType { Id = 3, Name = "Test3", Value = "Value3" }); List<SomeType> _NotInList2 = (from l1 in _List1 where !(from l2 in _List2 select l2.Name).Contains(l1.Name) select l1).ToList(); foreach (SomeType _Value in _NotInList2) { Console.WriteLine(_Value.Name); } } } class SomeType { public int Id { get; set; } public string Name { get; set; } public string Value { get; set; } } }