如何在实体框架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));

我的问题是如何把数字转换成字符串。

如何在实体框架4中使用查询生成器将数字转换为字符串

使用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;