我有一个这样的清单:
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(“列名”),即按字母顺序按颜色名称,所以名称属性?
我不断收到消息:
无法从用法推断出类型参数。尝试明确地指定类型参数。
答案 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();