我想到了"bill" + "john" + null == billjohn,但在我的这个例子中,它似乎正在评估为null:
var clients = from client in taxPortalService.Client()
select new ClientViewModel
{
ResidentialAddressLine1 = client.RESADDRESSLINE1,
ResidentialAddressLine2 = client.RESADDRESSLINE2,
ResidentialAddressLine3 = client.RESADDRESSLINE3,
ResidentialAddressLine4 = client.RESADDRESSLINE4,
ResidentialPostalCode = client.RESPOSTCODE,
ResidentialCountry = client.RESCOUNTRY,
IAResidentialAddress = client.RESADDRESSLINE1 + ", " + client.RESADDRESSLINE2 + ", " + client.RESADDRESSLINE3 + ", " + client.RESADDRESSLINE4 + ", " + client.RESPOSTCODE + ", " + client.RESCOUNTRY
};
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗?

我猜这是使用LINQ-to-SQL或EF作为后端,它正在生成SQL.那么,在一个TSQL null与任何级联是(默认): null.也许试试:
(row.Foo ?? "") + ", " + (row.Bar ?? "") + ...
Run Code Online (Sandbox Code Playgroud)
或者更容易:首先将数据作为值存入内存,然后进行合成.
小智 7
在C#中,或者更确切地说在.NET中,你是对的,"bill" + "john" + null给你"billjohn".
在SQL中,'bill' + 'john' + null给你null.
使用LINQ to Entities将您的C#转换为SQL,并且不会始终保留此类细微差别.
你可以使用更详细的
(client.RESADDRESSLINE1 ?? "") + ", " + (client.RESADDRESSLINE2 ?? "") + ", " + ...
Run Code Online (Sandbox Code Playgroud)
确保你只连接非空字符串,这不会有这个问题.