2017-03-25 36 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