LINQ:具有或不具有Where的SingleOrDefault

时间:2018-10-11 14:43:57

标签: c# asp.net .net entity-framework-core

.Net Core中的这两个Entity Framework Core查询带来相同的结果。

//check to see if Start DateTime and End DateTime are filled out
if ((values[i][3]) && (values[i][4])) {
  //check if it's been entered before, by looking in Column F:
  var existingEventId = values[i][5]; // Will be "" (falsy) if not yet added
  if (!existingEventId) {
    ... 
    // Log the event's ID so we don't make a duplicate:
    sheet.getRange(i + 2, 6).setValue(newEventId);
  ...

第一个在结尾处使用SingleOrDefault,子对象后跟Where,第二个则不使用Where。 两者有什么区别?相比使用另一个有好处吗?

2 个答案:

答案 0 :(得分:1)

一切都取决于实施。某些ORM将对这两个查询的处理稍有不同。但是,正如您已经注意到的那样,EF Core对它们的处理方式相同(应该这样做,因为它们在理论上是相同的)。

答案 1 :(得分:0)

这些应该等同于EF产生的相同查询。 SingleOrDefault版本只是一个快捷方式,因此您不必包括Where。您可以使用SQL事件探查器(如果使用SQL Server)来测试输出,以验证查询是否确实相同。