我在 ASP MVC
中创建了一个 actionresult,它应该显示与我的 Linq
查询匹配的记录。在我添加之前它一直工作正常:
records.State == '0' &&
此查询(在 t-sql 中)在 SQL Management Studio 中返回正确的结果,但在 Linq 中却没有:
public ActionResult Index(string q)
{
viewModel.Records = from records in db.records
where records.State == '0' &&
records.Title.Contains(q)
|| records.Title.Contains(q)
||records.Project.Contains(q)
|| records.Owner.Contains(q)
|| records.Number.Contains(q)
select events;
}
最佳答案
注意你如何表达你的逻辑。如果你想要的是
records.State == '0' && [whatever previous logic you have]
你应该把你之前所有的逻辑放在括号里:
viewModel.Records = from records in db.records
where records.State == '0' &&
(records.Title.Contains(q)
|| records.Project.Contains(q)
|| records.Owner.Contains(q)
|| records.Number.Contains(q))
select events;
另外,请注意您有重复的条件 records.Title.Contains(q)
,我在我的解决方案中将其删除。
此外,如果你的records.State
是数字类型(比如int
,而不是char/string
),那么你不应该使用撇号,但应直接使用数字:
viewModel.Records = from records in db.records
where records.State == 0 &&
(records.Title.Contains(q)
|| records.Project.Contains(q)
|| records.Owner.Contains(q)
|| records.Number.Contains(q))
select events;
关于c# - like 运算符给出零结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36575520/