实体框架的查询语言

时间:2017-06-21 05:30:15

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

所以我用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查询的这些示例之一吗?

1 个答案:

答案 0 :(得分:2)

from s in _context.Students where s.ID == 1 select s;

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

和这一个

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

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

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

此外,我认为在执行代码时,C#编译器会将第一个表单转换为基于等效方法的表达式作为内部lowering process的一部分。

相关问题