-3
ではありませんこれは、ここではSQL二LINQ文が
にLINQのためにある最初のクエリです:ここでは
var rc = from site in customer.OrganizationSites
from gt in site.GeneralTransactions
where (gt.DealPackage.PackageTransactionDetail.StartDate <= periodStart
&& gt.DealPackage.PackageTransactionDetail.EndDate >= periodEnd)
|| (gt.DealPackage.PackageTransactionDetail.StartDate >= periodStart
&& gt.DealPackage.PackageTransactionDetail.EndDate <= periodEnd)
&& gt.IsVerified.HasValue
&& gt.IsVerified.Value
&& (!gt.Invoices.Any()
|| !gt.Invoices.Any(i => i.StartDate >= periodStart && i.EndDate <= periodEnd))
select gt;
は、第二次のとおりです。
var rc = from site in customer.OrganizationSites
from gt in site.GeneralTransactions
where (gt.DealPackage.PackageTransactionDetail.StartDate <= periodStart
&& gt.DealPackage.PackageTransactionDetail.EndDate >= periodEnd)
|| (gt.DealPackage.PackageTransactionDetail.StartDate >= periodStart
&& gt.DealPackage.PackageTransactionDetail.EndDate <= periodEnd)
&& gt.IsVerified.HasValue
&& gt.IsVerified.Value
select gt;
rc = from gt in rc
where !gt.Invoices.Any()
|| !gt.Invoices.Any(i => i.StartDate >= periodStart && i.EndDate <= periodEnd)
select gt;
2番目のものは2つのステップで最初のものを実行しますが、2番目のものは実際に探しているものを返します(この場合は何もありません)、どこかでエラーが発生していますが、なぜ誰かが理由を指摘できれば大変感謝しています。
LINQ to Objectsですか? LINQ to SQL? EF?他に何か?もしそれがSQLに変換されることになったら、それぞれの場合に生成されたSQLを見ていらっしゃいますか?それらを単純化するためにクエリの一部を削除しようとしましたか? –
最初のフィルタの周りの最初のクエリにはカッコが多くあります.2つの*正確に同じものを作成しようとしましたか? (私はここでの優先順位について推論を開始したくない...) –
LINQ to SQL。私は実際にそれが生成するクエリを見ていない。これは、LINQ文が実際に同じであることを確認するためのものです。 –