Кто-нибудь знает, как это перевести? Когда я попадал в отладчик, я получаю 3 разных запроса, а var содержит массив результатов. Я пытаюсь заменить эту строку методом, который вызовет хранимую процедуру, но я не понимаю, что должен делать запрос. Большое спасибоПреобразование linq в SQL
var restbl =
context.tbl_one.FirstOrDefault(d => d.qty < d.tbl_two.Count(a => !a.tbl_three.ust))
?? context.tbl_one.FirstOrDefault(d => d.qty > d.tbl_two.Count(a => !a.tbl_three.ust));
{SELECT
`Extent1`.`id`,
`Extent1`.`name`,
`Extent1`.`qty`,
`Extent1`.`cdate`
FROM `tbl_one` AS `Extent1`}
{SELECT
`Extent1`.`id`,
`Extent1`.`tbl_one_id`,
`Extent1`.`tbl_three_id`,
`Extent1`.`enabled`
FROM `tbl_two` AS `Extent1`}
{SELECT
`Extent1`.`id`,
`Extent1`.`ttid`,
`Extent1`.`code`,
`Extent1`.`cdate`,
`Extent1`.`mdate`,
`Extent1`.`prt`,
`Extent1`.`ust`
FROM `tbl_three` AS `Extent1`}
var countToAdd = restbl.qty - context.tbl_two.Count(a => a.tbl_one_id == restbl.id && !a.tbl_three.ust);
Вы должны реорганизовать заявление LINQ в 'context.tbl_one.FirstOrDefault (г => firstCondition || secondCondition)'. Это будет один оператор SQL. –
Но разве условия имеют смысл? Разве это не так, как 'qty! = Count'? –
Спасибо @GertArnold, извините, мое понимание linq довольно плохое. Я всегда использую процедуры хранения и избегаю использования linq. Я знаю, многие говорили бы, что я должен использовать linq, но мне гораздо проще использовать прямой sql и просто создать метод для его вызова. Условия имеют смысл, программа работает нормально, я просто пытаюсь заменить edmx и linq. – carol1287