C# like运算符的结果为零
我在C# like运算符的结果为零,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我在ASP MVC中创建了一个actionresult,它应该显示与我的Linq查询匹配的记录。在我添加以下内容之前,它一直正常工作: records.State == '0' && 此查询(在t-sql中)在sql management studio中返回正确的结果,但不使用Linq: public ActionResult Index(string q) { viewModel.Records = from records in
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;
}
请在下面试试
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;
}
请在下面试试
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;
}
如果
State
属性的类型是char
类型,因为'0'
是char
如果状态
的类型为int
/tinyint
(字节),则应执行此操作
where records.State == 0
&& records.Title.Contains(q)
如果
State
属性的类型是char
类型,因为'0'
是char
如果状态
的类型为int
/tinyint
(字节),则应执行此操作
where records.State == 0
&& records.Title.Contains(q)
您的调用看起来是正确的(虽然您有两次Title.Contains()
),但您提到您的State
属性是一个tinyint
,因此您希望将其作为一个字符串进行比较(而不是以前的字符串):
您的调用看起来是正确的(虽然您有两次Title.Contains()
),但您提到您的State
属性是一个tinyint
,因此您希望将其作为一个字符串进行比较(而不是以前的字符串):
小心你的逻辑。如果你想要的是
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)
,我会在解决方案中删除它
此外,如果您的记录.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;
小心你的逻辑。如果你想要的是
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)
,我会在解决方案中删除它
此外,如果您的记录.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;
状态的类型是什么?@Shyju类型是tinyint@CitizenDB那你为什么要把它比作一个字符呢?请尝试records.State==0
。通过与“0”进行比较,实际上是将其与数值48进行比较。状态的类型是什么?@Shyju类型是什么tinyint@CitizenDB那你为什么要把它比作一个字符呢?请尝试records.State==0
。通过与“0”进行比较,实际上是将其与数值48进行比较