我工作这行代码:可查询的WHERE包含字符串,整数,日期时间
query = query.Where(p =>
p.ChckNumber.ToString().Contains(globalSearch.ToString()) ||
p.BankAccount.ToString().Contains(globalSearch.ToString()) ||
p.Description.ToString().Contains(globalSearch.ToString()) ||
p.CheckAmount.ToString().Contains(globalSearch) ||
p.ClearedDate.ToString().Contains(globalSearch.ToString()) ||
p.SentDate.ToString().Contains(globalSearch.ToString()));
有了这一行代码,我基本上是做一个搜索,它似乎好工作时globalSearch
是string
和像BankAccount
和Description
柱是varchar
,然而,当globalSearch
是Int
或DateTime
(-2233或2013年4月9日),用于列CheckAmount (int)
,ClearedDate (DateTime)
,SentDate (DateTime)
,则返回0行,并且如果globalSearch
一个int
在匹配0 它的工作原理!
我在做什么错?
我跑了此查询的SQL Server:
SELECT CONVERT(VARCHAR(MAX), ClearedDate) FROM myTable
和我所有的日期返回2017年9月9日如果globalSearch
是2017年9月10日它的工作原理,但它不会对我的需要的格式工作: 9/9/2017
因此,如果用户键入“2”,你想返回任何数字或日期字段包含2(如112号或日期01/03/2017)的所有项目。似乎不是很有用。 – Evk
请检查什么查询是在sql探查器的帮助下触发的。这会给你一个如何调整你的linq的想法。我猜测它与ToString()如何将数据转换为字符串以及使用哪种格式有关。 – Gurpreet
尝试逐步调试代码,1-尝试检查“Tostring”方法是否在输入数据上正常工作。 2 - 尝试检查sql-server数据库中的日期时间格式是否与您的日期时间输入一致 –