Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
3 views
in SQL by (20.3k points)

I have a list like this:

Red

Red

Brown

Yellow

Green

Green

Brown

Red

Orange

I am trying to do a SELECT UNIQUE with LINQ, i.e. I want

Red

Brown

Yellow

Green

Orange

var uniqueColors = from dbo in database.MainTable

                   where dbo.Property == true

                   select dbo.Color.Name;

I then changed this to:

var uniqueColors = from dbo in database.MainTable

                   where dbo.Property == true

                   select dbo.Color.Name.Distinct();

with no success. The first select gets ALL the colors, so how do I modify it to only get the unique values?

If there is a better way of structuring this query, more than happy to go that route.

How do I go about editing it so I can have .OrderBy( "column name" ) i.e. alphabetically by color name, so name property?

I keep getting a message:

The type of arguments cannot be inferred from the usage. Try specifying the type arguments explicitly.

1 Answer

0 votes
by (40.7k points)

As the Distinct() function will mess up the ordering, hence you need to do the sorting after that like this:

var uniqueColors = 

               (from dbo in database.MainTable 

                 where dbo.Property == true 

                 select dbo.Color.Name).Distinct().OrderBy(name=>name);

Related questions

0 votes
1 answer
0 votes
1 answer
+1 vote
1 answer
0 votes
1 answer
...