これを翻訳する方法を知っていますか?デバッガにヒットすると、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);
(あなたはMSSQLを使用すると仮定した場合)。これは1つのSQLステートメントになります。 –
しかし条件は意味がありますか?それは 'qty!= count'と同じではありませんか? –
ありがとう@ガート・アーノルド、申し訳ありませんが、私のlinqの理解はかなり悪いです。私は常にストアプロシージャを使用し、linqの使用を避けます。私はlinqを代わりに使用すべきだと多くの人が知っていることを知っていますが、私はストレートSQLを使用し、それを呼び出すメソッドを作成するほうがはるかに簡単です。条件は意味をなさない、プログラムは正常に動作し、私はちょうどedmxとlinqを置き換えようとしています。 – carol1287