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的值
或者我应该在myMyUserDto
中创建单独的属性来表示数据库中的内容吗
如果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”
谢谢您的详细回答,我非常感谢。一到期限我就接受。