👉🏼 Click here to Join I ❤️ .NET WhatsApp Channel to get 🔔 notified about new articles and other updates.
Using LINQ Distinct to Select Unique Data

Using LINQ Distinct to Select Unique Data

Author - Abdul Rahman (Bhai)

LINQ

26 Articles

Improve

Table of Contents

  1. What we gonna do?
  2. Why we gonna do?
  3. How we gonna do?
  4. Summary

What we gonna do?

In this article, let's learn about how to use Distinct and DistinctBy in LINQ in .NET.

Note: If you have not done so already, I recommend you read the article on Using LINQ Skip to Select Specific Data in Collections.

We can get unique piece of data from beginning of a collection using LINQ. We're going to use Distinct() and DistinctBy() methods. Let's take a look at each of these methods and how they work.

Why we gonna do?

Duplicate data in collections is a common problem. Without Distinct(), you'd need to manually track seen values using a HashSet. Distinct() deduplicates primitive collections, while DistinctBy() provides property-level deduplication for complex objects, returning the first occurrence for each unique key.

How we gonna do?

Get Unique items using Distinct

Sometimes we need to get just a distinct value out of the collection. For instance, we have a bunch of colors in there, we have a few blacks, we have a few violets, we have a few reds,etc., so what we might want to do is say I just want to see the distinct colors, I don't want them all duplicated. So, let's take a look at how we can do that using LINQ and get the unique items.


List<Product> products = GetProducts();

//Method Syntax
List<string> partitionedProducts = products
                                    .Select(product => product.Color)
                                    .Distinct()
                                    .ToList();
                    
//Query Syntax
List<string> partitionedProducts = (from product in products select product)
                                    .Select(product => product.Color)
                                    .Distinct()
                                    .ToList();
        
Demo Space

Get Unique items using DistinctBy

Instead of just getting colors what if we want the entire product object? We can also extract entire product object conditionally using DistinctBy while the condition evaluates to true. This returns the first product object for each color match and ignores the remaining for same color.


List<Product> products = GetProducts();

//Method Syntax
List<Product> partitionedProducts = products
                                    .DistinctBy(product => product.Color)
                                    .ToList();
                    
//Query Syntax
List<Product> partitionedProducts = (from product in products select product)
                                    .DistinctBy(product => product.Color)
                                    .ToList();
        
Demo Space

Summary

In this article we learn't how to get unique data within collection using Distinct and DistinctBy. We also learnt how to get unique object by passing an expression. All these can be used with any IEnumerable or IQueryable types.

👉🏼 Click here to Join I ❤️ .NET WhatsApp Channel to get 🔔 notified about new articles and other updates.
  • LINQ
  • Distinct
  • DistinctBy
  • Unique