How to get a distinct list in Entity Linq to SQL

Someone asked on Stack Overflow:

I have a generic object table where each entry has a Key and version. So you might have

Object 1, version 1  
Object 1, version 2  
Object 1, version 3  
Object 2, version 1  
Object 2, version 2

How can I request to return the highest version of each object, ie return version 3 of object 1 and version 2 of object 2? I can’t work out how to use a Distinct query as the objects do not match, they have different versions, I want the highest version number of each object

This is my query so far

 var dbObjects = _objectStoreRepository.GetDataObjects().OrderByDescending(d => d.Version).Where(d =>
                    d.ObjectKey.ToLower().Contains(objectKey) &&
                    ((d.Status.ToLower() == request.Status.ToLower()) || string.IsNullOrEmpty(request.Status)) &&
                    d.CreatedAt <= request.AsAtTime).ToList();

But this returns all versions of each matching object, not just the highest version

I posted the following answer, which was chosen as the accepted answer:

You will want to use a .GroupBy with a Select:

var results = _objectStoreRepository
    .GetDataObjects()
    .Where(d 
        => d.ObjectKey.ToLower().Contains(objectKey) 
        && ((d.Status.ToLower() == request.Status.ToLower()) || string.IsNullOrEmpty(request.Status)) 
        && d.CreatedAt <= request.AsAtTime)
    .GroupBy(o => o.ObjectKey)
    .Select(g => g.OrderBy(x => x.Version).LastOrDefault())
    .ToList();

First you group the results by common “key” then once those are grouped we order the results inside that group by the version and take the last or default. You may need to change the Select/OrderBy to fit your exact data.


Originally posted on Stack Overflow — 0 upvotes (accepted answer). Licensed under CC BY-SA.

signed letter b

Dad. Geek. Gamer. Software developer. Cloud user. Old Car enthusiast.  Blogger.


Top Posts


profile for Nate on Stack Exchange, a network of free, community-driven Q&A sites
a proud member of the blue team of 512KB club
Thoughts, opinions, and ideas shared here are my own. © 2026 Nate Bross.