C # Entity Framework и запрос Linq - PullRequest
       0

C # Entity Framework и запрос Linq

0 голосов
/ 23 января 2019

В построении запроса ниже есть ли какая-либо причина, по которой Where предложение B отделено от Where предложения A?

truckList = (from truck in _dbcontext.Truck.Where(x => x.ClientId == clientId) //(A)
    join comp in _dbcontext.TruckComponent
    on truck.Equipment.ProtId equals comp.ComponentId
    where truck.EquipmentId > 0 && truck.FieldId > 0 //B
    select NewTruckVmFromDbTruck(truck, comp)).AsEnumerable();

Могут ли они быть просто объединены в A или в B?Например как:

truckList = (from truck in _dbcontext.Truck.Where(
                x => x.ClientId == clientId && 
                truck.EquipmentId > 0 && 
                truck.FieldId > 0)
                ...rest of query...
             )

Ответы [ 2 ]

0 голосов
/ 24 января 2019

В любом случае предпочтительнее не смешивать синтаксис беглого и лямбда-запроса, как насчет:

truckList = (from truck in _dbcontext.Truck
             where truck.EquipmentId > 0 && truck.FieldId > 0 && truck.ClientId == clientId
             join comp in _dbcontext.TruckComponent on truck.Equipment.ProtId equals comp.ComponentId
             select NewTruckVmFromDbTruck(truck, comp)).AsEnumerable();
0 голосов
/ 23 января 2019

Это потому, что 'truck' и 'comp' из другой таблицы

truckList = (from truck in _dbcontext.Truck.Where(x => x.ClientId == clientId) //(A)
join comp in _dbcontext.TruckComponent
on truck.Equipment.ProtId equals comp.ComponentId
where truck.EquipmentId > 0 && truck.FieldId > 0 //B
select NewTruckVmFromDbTruck(truck, comp)).AsEnumerable();

truck - из таблицы под названием "Truck", а comp - из таблицы под названием "TruckComponent"

Оба имеют разные идентификаторы. Если вы просто выберете таблицу ' Truck ', вы не получите данные таблицы * TruckComponent .

select NewTruckVmFromDbTruck(truck)).AsEnumerable();

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...