Dies ist für LINQZwei LINQ-Anweisungen, die die gleiche Sache zurückkehren sollten, sind nicht
Hier in SQL die erste Abfrage ist:
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;
The:
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;
Hier ist die zweite die zweite macht einfach die erste in zwei Schritten, aber die zweite gibt zurück, wonach ich eigentlich suche (in diesem Fall nichts), ich denke, ich mache irgendwo einen Fehler, kann aber nicht sehen, wo. Ich würde es sehr schätzen, wenn jemand darauf hinweisen könnte, warum.
Ist das LINQ zu Objekten? LINQ zu SQL? EF? Etwas anderes? Wenn Sie etwas in SQL konvertieren, haben Sie sich das generierte SQL in jedem Fall angesehen? Haben Sie versucht, Teile der Abfragen zu entfernen, um sie zu vereinfachen? –
Sie haben mehr Klammern in der ersten Abfrage um die ersten Filter ... haben Sie versucht, die beiden * genau * gleich? (Ich möchte hier nicht über den Vorrang sprechen ...) –
LINQ to SQL. Ich habe mich nicht wirklich gefragt, welche Abfrage es generiert. Dies ist mehr zu überprüfen, dass die LINQ-Anweisung tatsächlich identisch ist. –