How can i select distinct using one field

How can i select distinct() based on one field?

I have the following LINQ expression, how can I select distinct by ID field. for some reason i used .Distinct() but keeps shown me a duplicate, I want to show just one record

 var customersbyName = await _context.vw_CustomerSearch.AsNoTracking()
                            .Where(c => c.Name.Contains(request.searchWord))   
                            .Distinct()
                            .ToListAsync();

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

try:

var customersbyName = await _context.vw_CustomerSearch.AsNoTracking()
                            .Where(c => c.Name.Contains(request.searchWord))
                            .Select(c => c.ID)
                            .Distinct()
                            .ToListAsync();

Method 2

Distinct compare each column of the row, so if one column is different, the row is distinct for linq / sql.

You can try it with a GroupBy:

var customersbyName = await _context.vw_CustomerSearch.AsNoTracking()
  .Where(c => c.Name.Contains(request.searchWord))
  .GroupBy(i => i.ID)
  .Select(x => x.First())


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x