0

我正在尝试执行以下 linq 查询,它似乎忽略了操作顺序。(括号优先)

var result = _repo.Transactions.Where(t => 
                      t.DateEntered > EntityFunctions.AddDays(DateTime.Now, -7) 
                      && ( t.TranDesc != "BALANCE FORWARD" && t.Withdrawl == 0 && t.Deposit == 0 ) ); 

这是生成的 where 子句:

WHERE ([Extent1].[dateentered] > (DATEADD (day, -7, SysDateTime()))) 
AND (N'BALANCE     FORWARD' <> [Extent1].[TranDesc]) 
AND (cast(0 as decimal(18)) = [Extent1].[Withdrawl]) 
AND (cast(0 as decimal(18)) = [Extent1].[Deposit])

任何想法我做错了什么?

编辑:这实际上是我想要的,它解决了我的问题。只是没想到一路。谢谢。

var result = _repo.Transactions.Where(t => 
                      t.dateentered > EntityFunctions.AddDays(DateTime.Now, -7) 
                      && ((t.TranDesc == "BALANCE FORWARD" && (t.Withdrawl != 0 || t.Deposit != 0))
                      || (t.TranDesc != "BALANCE FORWARD")));
4

1 回答 1

2

a && (b && c && d)和之间没有区别a && b && c && d,这就是生成的 SQL 中的括号与 LINQ 查询中的括号不完全相同的原因。但最后这些查询之间没有区别。

于 2013-06-20T05:45:03.317 回答