我工作這行代碼:可查詢的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數據庫中的日期時間格式是否與您的日期時間輸入一致 –