【问题标题】:Query language for Entity Framework实体框架的查询语言
【发布时间】:2017-06-21 05:30:14
【问题描述】:

所以我正在使用 EF 学习 .NET Core,并学习了一些教程。到目前为止,我还没有看到使用什么查询语言的一个很好的介绍。到目前为止,我已经看到使用了两种方法:

  • 面向功能的方法:

例子是:

_context.Exams.ToListAsync()
_context.Problems.SingleOrDefaultAsync(p => p.ExamID == exam.ID
students.Where(s => s.LastName.Contains(searchString) || s.FirstMidName.Contains(searchString));

有时这些是串在一起的:

_context.Students
            .AsNoTracking()
            .SingleOrDefaultAsync(m => m.ID == id);
  • 看起来像 SQL 的方法:

我认为只需要一个例子:
from problem in _context.Problems where problem.ExamID == examID select problem;

所以我的问题是,这两个分别叫什么?你什么时候应该选择一个而不是另一个(我相信我看到一个教程同时使用两者)。是这些 LINQ 查询示例之一吗?

【问题讨论】:

    标签: asp.net-mvc entity-framework linq asp.net-core


    【解决方案1】:
    from s in _context.Students where s.ID == 1 select s;
    

    我相信这个被称为查询语法类型的 LINQ 表达式。

    还有这个

    _context.Students.SingleOrDefault(m => m.ID == 1);
    

    有些人称这种格式为基于方法的 linq 查询表达式。这个更明确(对某些人来说)

    这些只是名称,人们可以根据个人喜好选择他们想要使用的名称。要理解的重要一点是,两种格式都会产生相同的结果。

    我还认为,当代码执行时,C# 编译器确实会将第一种形式转换为基于方法的等效表达式,作为内部lowering process 的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2013-03-17
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多