使用条件运算符
问题描述:
的我有我的数据库中的表,其地址分成三列:使用条件运算符
First = The House number and street name NOT NULL
Middle = e.g Business park name or NULL
Last = Area name or NULL
的First
柱将永远有一个值,但其他两个可能包含的值。我试图实现的是,如果Middle or Last
为空返回First
列值如果First or Middle
有值然后返回这两个,如果全都返回它们全部3个。所以我想使用条件运算符来实现这一点。
我的代码如下:
using (var dbContext = new MyEntities())
{
return dbContext.User.Select(a => new MyUserDto
{
Address = !string.IsNullOrEmpty(a.First + a.Middle + a.Last) ? a.First + a.Middle + a.Last : a.First
}).ToList();
}
如何更改代码即可获得的First and Middle
的值,如果中间不为空
,或者我应该在我MyUserDto
创建单独的属性来表示什么在数据库?
答
如果中间或最后是空返回的第一列值,如果第一个或中间有值,则返回这两个如果一切再回到他们
的所有3如果我理解你的要求字面上那么这将是
Address = a.First + (a.Middle == null || + a.Last == null) ? "" : a.Middle + a.Last;
但如果Last
为空,但Middle
不是那么对于Last
价值被忽略,WH这将意味着这似乎很奇怪。我怀疑你只是想到位任何空的空白字符串这将仅仅是
Address = a.First + a.Middle + a.Last;
由于与非空字符串(不像SQL)级联时,其中空字符串被当作空字符串在.NET。
或者我应该在MyUserDto中创建单独的属性来表示数据库中的内容?
您当然可以做到这一点,只需添加一个属性即可进行串联。这样,您可以独立设置部件,而无需解析串联的字符串。
+0
感谢您的详细解答,我非常感谢。我会尽快接受这个时间限制。 – Code
答
Address = a.First + a.Middle + a.Last
这应该工作,你
我会让你的DTO完全匹配数据库中的表,它有助于当你走另一条路,插入DTO到表中,你不必去尝试解析事情以获取输入的地址。 –
您不应该需要将null连接到一个字符串上,它不会返回null,它会返回原始字符串。例如''Test“+ null ==”Test“' –