LINQ to Entities - DISTINCT在一列上

时间:2011-12-12 11:38:33

标签: linq entity-framework linq-to-entities

有没有办法用Linq to Entities(或实体SQL,或方法语法,或任何其他方式)编写以下查询,但我想用Linq to Entities实现它:

SELECT DISTINCT Column1
FROM Table1

我正在使用Entity Framework 4.当然,我不想使用在数据库中提取数据后过滤数据的Distinct方法。

感谢,帕维尔

2 个答案:

答案 0 :(得分:10)

使用类似

的内容
db.Table1.Select(t => t.Column1).Distinct()

正如Munim在评论中提到的,Distinct()方法确实将DISTINCT添加到查询中。因此产生的SQL查询将是

SELECT [Distinct1].[Column1] AS [Column1]
  FROM ( SELECT DISTINCT 
    [Extent1].[Column1] AS [Column1]
    FROM [dbo].[Table1] AS [Extent1]
  )  AS [Distinct1]

答案 1 :(得分:0)

对于distinct by列,请使用此扩展名:

public static IEnumerable<T> DistinctBy<T, TKey>(this IEnumerable<T> items, Func<T, TKey> property)
{
    return items.GroupBy(property).Select(x => x.First());
}