LINQ Contains

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; }
    }
}
Scroll to Top