我的数据库中有一个表,它将地址分为三列:
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
中创建单独的属性来表示数据库中的内容?
答案 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
这应该对你有用