C# 条件运算符的使用

C# 条件运算符的使用,c#,C#,我的数据库中有一个表,将地址分为三列: First = The House number and street name NOT NULL Middle = e.g Business park name or NULL Last = Area name or NULL 第一列始终有一个值,但其他两列可能包含一个值。我试图实现的是,如果Middle或Last为null,则返回First列值如果First或Middle具有值,则返回这两个值,如果全部,则返回全部3个值。所以我考虑使用条件运算符来

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

First = The House number and street name NOT NULL
Middle = e.g Business park name or NULL 
Last = Area name or NULL
第一列
始终有一个值,但其他两列可能包含一个值。我试图实现的是,如果
Middle或Last
为null,则返回
First
列值如果
First或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和Middle的值

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

如果Middle或Last为null,则返回第一列值;如果First或Middle有值,则返回这两个值;如果all,则返回全部3个值

如果我从字面上理解你的要求,那就是

Address = a.First + (a.Middle == null || + a.Last == null) ? "" : a.Middle + a.Last;
但这意味着,如果
Last
为空,但
Middle
不是空,那么
Last
的值将被忽略,这似乎很奇怪。我怀疑你只是想用空白字符串来代替任何空字符串

Address = a.First + a.Middle + a.Last;
因为空字符串在.NET中与非空字符串连接时被视为空字符串(与SQL不同)

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

您当然可以这样做,只需添加一个动态进行连接的属性。这样,您就可以独立地设置部分,而不必解析连接的字符串

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

这应该对您有用

我会让您的DTO与数据库表精确匹配,当您以另一种方式将DTO插入到表中时,它会有所帮助,您不必尝试解析内容以获取输入的地址。您不需要-将
null
连接到字符串上不会返回null,它返回原始字符串。e、 g.
“Test”+null==“Test”
谢谢您的详细回答,我非常感谢。一到期限我就接受。