我正在尝试执行以下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")));
答案 0 :(得分:2)
a && (b && c && d)
和a && b && c && d
之间没有区别,这就是为什么生成的SQL中的括号与LINQ查询中的括号不完全相同的原因。但最后这些查询之间没有区别。