使用条件运算符

时间:2015-11-04 15:29:32

标签: c#

我的数据库中有一个表,它将地址分为三列:

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为null,则返回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();
}

如果middle不为null,如何更改代码以获取First and Middle的值

或者我应该在MyUserDto中创建单独的属性来表示数据库中的内容?

2 个答案:

答案 0 :(得分:5)

  

如果Middle或Last为null,则返回First列值如果First或Middle有值,则返回那两个,如果all则返回所有3个

如果我按字面解释您的要求,那么它将是

Address = a.First + (a.Middle == null || + a.Last == null) ? "" : a.Middle + a.Last;

但这意味着如果Last为空,但Middle不是,则忽略Last的值,这似乎很奇怪。我怀疑你只想要空白字符串代替任何 null,这只是

Address = a.First + a.Middle + a.Last;

由于在使用非空字符串(与SQL不同)连接空字符串时,它们被视为.NET中的空字符串。

  

或者我应该在MyUserDto中创建单独的属性来表示数据库中的内容?

你当然可以这样做,只需添加一个可以动态连接的属性。这样,您可以独立设置部件,而无需解析连接的字符串。

答案 1 :(得分:2)

Address = a.First + a.Middle + a.Last 

这应该对你有用