How to Remove Duplicates and Get Distinct records from List using LINQ?

Below is a sample source code demonstrating on how to remove duplicates and get distinct records in List using LINQ and C#?

How to Remove Duplicates and Get Distinct records from List using LINQ?

using System;

using System.Collections.Generic;


using System.Linq;

namespace AbundantCode

{
    public class Employee

    {
        public int EmpID { get; set; }
        public string Name { get; set; }
    }

    internal class Program

    {
        //How to Remove Duplicates and Get Distinct records from List using LINQ ?

        private static void Main(string[] args)

        {
            List<Employee> employees = new List<Employee>()

            {
            new Employee { EmpID = 1 , Name ="AC"},

            new Employee { EmpID = 2 , Name ="Peter"},

            new Employee { EmpID = 3 , Name ="Michael"},

            new Employee { EmpID = 3 , Name ="Michael"}
            };

            //Gets the Distinct List

            var DistinctItems = employees.GroupBy(x => x.EmpID).Select(y => y.First());

            foreach (var item in DistinctItems)

                Console.WriteLine(item.Name);

            Console.ReadLine();
        }
    }
}
Tags :

9 Comments

  • What if you want to find uniqueness over both name and id? As an examaple

    List employees = new List()
    {
    new Employee { EmpID = 1 , Name =”AC”},
    new Employee { EmpID = 2 , Name =”Peter”},
    new Employee { EmpID = 3 , Name =”Michael”},
    new Employee { EmpID = 3 , Name =”Michael”}
    new Employee { EmpID = 3 , Name =”Michael”}
    new Employee { EmpID = 4 , Name =”Michael”}
    };

    results would be:
    ID, Name
    1, AC
    2, Peter
    3, Michael
    4, Michael

    • The existing code takes care of it … am assuming that
      1, AC
      2, Peter
      3, Michael
      4, Michael

      In the result , 3 – Michael and 4- Michael is definitely unique . Are you referring to the uniqueness of name Or id ?

      • I would like to determine the uniqueness of by both name AND id. In your code example
        var DistinctItems = employees.GroupBy(x => x.EmpID).Select(y => y.First());
        the uniqueness is for EmpID only. How to modify this to include the Name?

        • var DistinctItems = employees.GroupBy(x => new { x.EmpID, x.Name }).Select(y => y.First());

  • Thanks a lot. It worked fine for me 🙂

  • Thanks its working 🙂

  • Why do you need the “.Select(y => y.First())? at the end of line 39?

  • help for all column distinct from database

  • List duplicates = lst.GroupBy(x => x) .Where(g => g.Count() > 1) .Select(g => g.Key) .ToList();

    Lee

Leave Your Comment