我怎样才能使用LINQ做SELECT UNIQUE?

我有这样一个列表:

Red Red Brown Yellow Green Green Brown Red Orange 

我想用LINQ做一个SELECT UNIQUE,也就是我想要的

 Red Brown Yellow Green Orange var uniqueColors = from dbo in database.MainTable where dbo.Property == true select dbo.Color.Name; 

然后我改变了

 var uniqueColors = from dbo in database.MainTable where dbo.Property == true select dbo.Color.Name.Distinct(); 

没有成功。 第一个select获取所有的颜色,所以我如何修改它只获得唯一的值?

如果有更好的方法来构build这个查询,那么很高兴能走这条路。

我怎么去编辑它,所以我可以有.OrderBy(“列名称”)即按字母顺序的颜色名称,所以名称属性?

我不断收到消息:

types参数不能从用法中推断出来。 尝试明确指定types参数。

Distinct()将会搞乱顺序,所以你必须在这之后进行sorting。

 var uniqueColors = (from dbo in database.MainTable where dbo.Property == true select dbo.Color.Name).Distinct().OrderBy(name=>name); 
 var uniqueColors = (from dbo in database.MainTable where dbo.Property == true select dbo.Color.Name).Distinct(); 

使用查询理解语法,您可以实现orderby,如下所示:

 var uniqueColors = (from dbo in database.MainTable where dbo.Property orderby dbo.Color.Name ascending select dbo.Color.Name).Distinct();