所以我用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);
我认为只需要一个例子:
from problem in _context.Problems where problem.ExamID == examID select problem;
所以我的问题是,这两个分别被称为什么?什么时候应该选择另一个(我相信我看到一个教程同时使用)。并且是LINQ查询的这些示例之一吗?
答案 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的一部分。