2013-02-05 33 views
0

我遇到以下問題。我使用指定的值從數據庫中檢索業務。字段businessno是整型的類型。此後是代碼如何使用實體框架中的查詢生成器將數字轉換爲字符串4

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)); 

我的問題是如何將數字轉換爲字符串。

+0

爲什麼在進行數據庫查詢之前不能檢查'businessno'? – duedl0r

+0

它看起來像你在這裏建立一個SQL字符串。如果是這種情況,那麼在你需要用%字符包圍它的部分字詞上有一個類似於SQL的SQL。例如。其中名稱LIKE'%test%' –

+0

oops。我會重寫代碼並復出 – Pavlos

回答

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; 
+0

嗨lazyberezovsky。我也會嘗試這個解決方案。謝謝 – Pavlos

相關問題