LINQ Where表达式中括号未生效问题求助
问题解答
括号的作用是明确逻辑优先级,不会被&&运算符影响,你的表达式里括号的优先级是正常生效的。
你的表达式逻辑是:筛选出IdName不为空/空字符串,同时满足type等于"Iphone"且number不等于12的数据。如果结果不符合预期,大概率是逻辑需求和代码不匹配,或者数据本身的问题,而非括号失效:
- 检查逻辑是否正确:比如你是不是想表达
type等于"Iphone" 或者number不等于12?如果是,括号里应该用||替代&&。 - 检查数据匹配问题:比如数据库中
type的值是否是大小写敏感的?比如实际存储的是"iPhone"(大写P),而代码里写的是"Iphone",会导致匹配失败。 - 分步调试验证:可以拆分表达式单独测试,先查
context.table.Where(a => !string.IsNullOrEmpty(a.IdName)).ToList()的结果,再查context.table.Where(a => a.type == "Iphone" && a.number !=12).ToList()的结果,看两者的交集是否是你预期的数据。
内容的提问来源于stack exchange,提问作者darksaky
相关产品推荐
相关产品推荐

