2017-06-21 90 views
0

所以我正在學習.NET核心與EF,並通過了幾個教程。到目前爲止我沒有看到的是使用什麼查詢語言的一個很好的步驟。我已經看到了兩種方式來使用至今:實體框架的查詢語言

  • 功能爲導向的方法:

的例子是:

_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-looking appr oach:

我認爲只需要一個例子:
from problem in _context.Problems where problem.ExamID == examID select problem;

所以我的問題是,什麼是這兩個分別叫什麼?什麼時候應該選擇一個(我相信我看到一個教程同時使用)。並且是LINQ查詢的這些例子之一嗎?

回答

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

我相信這個被稱爲查詢語法類型的LINQ表達式。

而這一次

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

有些人把這種格式基於方法LINQ查詢表達式。這是一個更明確的(對於一些人)

這些只是名稱,它是個人喜好,選擇他們想要使用哪一個人。重要的是要理解,兩種格式都會產生相同的結果。

此外,我認爲當代碼執行時,C#編譯器會將第一個窗體轉換爲其等效的基於方法的表達式,作爲內部lowering process的一部分。