-3
這對LINQ到SQL兩個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;
的第二個簡單地做了兩個步驟中的第一個,但第二個返回我實際上正在尋找的東西(在這種情況下,什麼都沒有),我想我在某個地方犯了一個錯誤,但看不到它在哪裏。如果有人能指出原因,我將不勝感激。
這是LINQ to Objects嗎? LINQ to SQL? EF?還有別的嗎?如果它最終轉換爲SQL,那麼您是否在每種情況下查看了生成的SQL?你有沒有嘗試刪除部分查詢來簡化它們? –
圍繞第一個過濾器的第一個查詢中有更多的括號......您是否嘗試使兩個*完全相同? (我不想開始推理這裏的優先級...) –
LINQ to SQL。我沒有真正看過它生成的查詢。這更驗證LINQ語句實際上是相同的。 –