EF6查询building以获取列表中的第一个对象



我有一个Car类:

public class Car
    {
      public int Id { get; set; }
      public List<Engine> Engine { get; set; } 
    }
public class Engine
    {
      public int Id { get; set; }
      public string EngineName{ get; set; } 
    }

我想创建一个选择查询,它看起来像这样:

 IQueryable<Car> querybuilder = carDbSet.Include(x=>x.Engine);   // simple example

//这适用于

if(sunIsShining)
{
    querybuilder = querybuilder.Where(e =>e.Id == 5)   // all records where carId = 5
}

//不起作用

  if(windIscold)
  {
      querybuilder = querybuilder.Where(e =>e.Engine.FirsOrDefault().EngineName == "V8" )
   // e =>e.Engine.FirsOrDefault().EngineName value is null when in the db I have V8..
  }

我只需要在发动机的第一次记录上进行验证,尽管事实上关系是一辆车对多辆发动机。。我该怎么做?我应该以某种方式创建一个只返回第一个引擎记录的subSelect吗?

如果汽车发动机的V8记录无关紧要,则可以使用Any

 querybuilder = querybuilder.Where(e => e.Engine.Any(a => a.EngineName == "V8"));

如果你肯定只需要坐在第一排,这会变得更加复杂。

最新更新