应该返回相同内容的两个LINQ语句不是

时间:2017-04-26 18:22:48

标签: c# linq

这适用于LINQ to SQL

这是第一个查询:

While(true)\\ must constantly monitor units
{ 
  if(units.count< 10)
  {    
    \\ launch units    
  }

  thread.sleep(100); \\ to avoid 100% CPU usage
}

这是第二个:

            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;

第二个只是分两个步骤完成第一个,但第二个返回我实际寻找的东西(在这种情况下,没有),我想我在某个地方犯了一个错误但是看不到哪里。如果有人能指出原因,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

您的第一个查询有一个顶级||。合并a || bc应该(a || b) && c,但你要a || b && c,意思是a || (b && c)