2017-03-25 33 views
0

設置:asp.net的MVC的Web應用程序,蔚藍的SQL數據庫,EF代碼優先項目字符串組合不起作用

我想3串結合,短成一個字符串,如下所示:

CompanyAddress = company.ZipCode.ToString() + " " + company.City + ", " + company.Street + " " + company.StreetNr 

ZipCode是一個簡短的,所有其他的都是字符串。在控制器操作中使用此代碼將不會返回任何記錄(並且在運行時不會顯示錯誤消息)。當我省略ZipCode部分時,我得到所有記錄。

我也試過ToString(company.ZipCode),沒有.ToString()。給出一個擺動線(不編譯),並分別運行沒有錯誤信息和沒有記錄作爲回報。 請幫忙。

附加信息: 代碼行是一個API控制器的一部分(見下文),ZipCode是空的。 當ZipCode是代碼行的一部分時,控制器會提供空值,否則它會提供正確的字符串。

 var companies = UnitOfWork.GetAll<Company>(); 
     var query = company in companies 
        where company.Activ == true 

        select new ActiveCompaniesViewModel 
        { 
         CompanyAddress = company.ZipCode.ToString() + " " + company.City + ", " + company.Street + " " + company.StreetNr 
        }; 

     return query; 
+2

你的ZipCode是否爲空? –

+0

您的意思是「zipCode爲空」 - 但City,Street和StreetNr也是如此!如果郵編只是一個字符串,那麼你可能使用了錯誤的數據類型。 – Jamiec

+0

ToString(company.ZipCode)給出wiggle行,並且不編譯 – Manu

回答

0

這工作(沒有任何意義,我雖然!):

CompanyAddress = SqlFunctions.StringConvert((decimal?)company.ZipCode) + " " + company.City + ", " + 
          company.Street + " " + 
          company.StreetNr, 
+0

對短的ToString()在LINQ to Entities上無法按預期工作,所以我們使用SqlFunction.StringConvert來進行轉換 – ProgrammerGuy

+0

我明白我們爲什麼需要SqlFunctions.StringConvert,但爲什麼從短到字符串轉換需要'十進制'對我來說似乎很陌生。 – Manu