如何使用实体框架4中的查询构建器将数字转换为字符串

时间:2013-02-05 08:32:32

标签: c# entity-framework

我有以下问题。我从数据库中检索具有指定值的业务。字段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));

我的问题是如何将数字转换为字符串。

1 个答案:

答案 0 :(得分:0)

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