[问题] PredicateBuilder string互相比较问题

楼主: windofsmile (微笑之风)   2018-10-08 23:13:19
各位版上的大大们好 小弟遇到卡了许久的瓶颈
在专案中的Service层中有用到PredicateBuilder
用以承接SQL的资料
像是var keyword = PredicateBuilder.New<Model>();
keyword = keyword.And(m =>m.sex =="male");
keyword = keyword.And(m =>m.birthday >= "输入者选择的日期");
最后再
return UserRepository.Queryable().AsExpandable().Where(keyWord);
类似这样的写法。
在关键字的搜索方面都很顺,没什么型别上的问题,
但birthday这边遇到了很大的瓶颈。
小弟想让使用者选择特定时间区段后,Service捞出该区间的使用者资讯
由于SQL中的字段定义是nvarchar,也不能够随意更动SQL的字段,
以日期A、B为判断,拿来与数据库中的birthday做比较(nvarchar)
在keyword = keyword.And(m => m.birthday >= "使用者选择的日期A");
keyword = keyword.And(m => m.birthday <= "使用者选择的日期B");
的时候,就会一直被卡住,错误讯息是string不能够与string做比较
使用者选择的日期A、B我有办法将它转为int 唯独m.birthday不知如何下手。
小弟因为对linq不熟
一开始试过Convert.Int16(m.birthday) ; int.parse(m.birthday)等常用转型方式
到后来google才发现在linQ中是没办法使用这样的转型方式的
也查到许多资料,但大部分都是纯linq的语法,PredicateBuilder的方法资讯不多
因此突然间不知道该怎么突破这个障碍...
如果版上的大大们有可以提供的google方向,或是一些想法
希望大大们可以不吝指教<_O_>
作者: qa17b (圣猿降临 众酸退散)   2018-10-08 23:17:00
转datetime比较啊?
作者: t64141 (榕树)   2018-10-09 00:38:00
假设DB转date的api是to_date(), 试试 oracle to_date by linq之类的关键字顺便吐槽一下前人,时间字段用nvarchar是在想什么...再不行就只能用SP处理后再给程式呼叫了
作者: chentsungmin (MinMin)   2018-10-09 01:00:00
使用 String.Compare 比较试试
作者: ATPS4869 (ATPS4869)   2018-10-09 18:18:00
试试 DbFuntions.CreateDateTime

Links booklink

Contact Us: admin [ a t ] ucptt.com