如何使用LINQ进行SELECT UNIQUE?

时间:2010-08-19 06:09:54

标签: sql visual-studio 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获取所有颜色,因此如何将其修改为仅获取唯一值?

如果有更好的方法来构建这个查询,那么非常乐意走这条路。

我如何编辑它以便我可以使用.OrderBy(“列名”),即按字母顺序按颜色名称,所以名称属性?

我不断收到消息:

  

无法从用法推断出类型参数。尝试明确地指定类型参数。

3 个答案:

答案 0 :(得分:155)

Distinct()会破坏排序,所以你必须在那之后进行排序。

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

答案 1 :(得分:19)

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

答案 2 :(得分:10)

使用查询理解语法,您可以按如下方式实现orderby:

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