如何在实体框架4中使用查询生成器将数字转换为字符串
本文关键字:数字 字符串 转换 查询 实体 框架 | 更新日期: 2023-09-27 17:57:33
我有以下问题。我从数据库中检索具有指定值的业务。字段businessno
是整数类型。以下是代码
ObjectQuery<BUSINESS> q_business =
_context.BUSINESS.Include("CUSTOMSOFFICE").Where(
"it.BUSINESSNO=" + int.Parse(pv_businessno)).Where(
string.Format("(it.BUSINESSSTART >= DATETIME'{0:yyyy-MM-dd HH:mm}')
and (it.BUSINESSSTART <= DATETIME'{1:yyyy-MM-dd HH:mm}')",
pv_sdate, pv_edate));
然而,用户需要给出一个值,并像该值一样从businessno
的数据库中检索数据。
我在网上搜索,最后把代码改写如下。除非提供了businessno
的完整值,否则此代码不会检索任何记录。
ObjectQuery<BUSINESS> q_business =
_context.BUSINESS.Where(
"CAST(it.BUSINESSNO as System.String) like @abc", new ObjectParameter("abc", busno)).Where(
string.Format("(it.BUSINESSSTART >= DATETIME'{0:yyyy-MM-dd HH:mm}')
and (it.BUSINESSSTART <= DATETIME'{1:yyyy-MM-dd HH:mm}')",
pv_sdate, pv_edate));
我的问题是如何把数字转换成字符串。
使用SqlFunctions。StringConvert方法在服务器端将整数转换为字符串。
ObjectQuery<BUSINESS> q_business =
from b in _context.BUSINESS
where SqlFunctions.StringConvert((double)b.BUSINESSNO).Contains(busno) &&
b.BUSINESSSTART >= pv_sdate &&
b.BUSINESSSTART <= pv_edate
select b;