实体框架选择不同的名称

ast*_*ght 123 c# linq entity-framework distinct

如何使用Entity Framework执行此SQL查询?

SELECT DISTINCT NAME FROM TestAddresses
Run Code Online (Sandbox Code Playgroud)

par*_*agy 246

使用lambda表达式..

 var result = EFContext.TestAddresses.Select(m => m.Name).Distinct();
Run Code Online (Sandbox Code Playgroud)

  • 也许是一个愚蠢的问题,但这是否会将所有地址返回到 C# 代码层然后过滤它们,或者是否将适当的查询传递到数据库服务器以仅返回唯一值? (3认同)
  • @DA EF 将适当的查询传递给数据库。/sf/ask/2631667741/ (3认同)

mar*_*c_s 49

试试这个:

var results = (from ta in context.TestAddresses
               select ta.Name).Distinct();
Run Code Online (Sandbox Code Playgroud)

这会给你一个IEnumerable<string>- 你可以打电话.ToList()来获得一个List<string>.

  • 这样可以获得比分组更好的性能。不同:SQL Server 执行时间:CPU 时间 = 0 毫秒,运行时间 = 50 毫秒。分组:SQL Server 执行时间:CPU 时间 = 0 毫秒,运行时间 = 112 毫秒。 (3认同)

Kim*_*jan 21

该方法@alliswell表明是完全有效的,并有另一种方式!:)

var result = EFContext.TestAddresses
    .GroupBy(ta => ta.Name)
    .Select(ta => ta.Key);
Run Code Online (Sandbox Code Playgroud)

我希望它对某人有用.

  • 这对我来说非常有用,因为我需要选择多列 (3认同)

Haf*_*sad 12

DBContext.TestAddresses.Select(m => m.NAME).Distinct();
Run Code Online (Sandbox Code Playgroud)

在这个例子中没有重复的CategoryId和没有CategoryName我希望这会对你有所帮助