Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get distinct records using linq to entity

Hi I'm using linq to entity in my application. I need to get distinct records based on one column value "Name"

So I have a table similar like you can see below:

(User) ID Name Country DateCreated 

I need to select all this items but uniques based on Name (unique). Is it possible to accomplish using linq, if so please show me how.

var items = (from i in user select new  {i.id, i.name, i.country, i.datecreated}).Distinct(); 
like image 397
Boommer Avatar asked Aug 22 '10 16:08

Boommer


1 Answers

The Distinct() method doesn't perform well because it doesn't send the DISTINCT SQL predicate to the database. Use group instead:

var distinctResult = from c in result              group c by c.Id into uniqueIds              select uniqueIds.FirstOrDefault(); 

LINQ's group actually creates subgroups of entities keyed by the property you indicate:

Smith   John   Mary   Ed Jones   Jerry   Bob   Sally 

The syntax above returns the keys, resulting in a distinct list. More information here:

http://imar.spaanjaars.com/546/using-grouping-instead-of-distinct-in-entity-framework-to-optimize-performance

like image 97
Dave Swersky Avatar answered Sep 21 '22 13:09

Dave Swersky