我的数据库中有一个表,将地址分为三列:
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();
}
First and Middle
如果middle不为null,如何更改代码以获取值
还是应该在我MyUserDto
的数据库中创建单独的属性以表示数据库中的内容?
如果Middle或Last为null,则返回First列的值;如果First或Middle具有值,则返回这两个值;如果全部,则返回所有3个值
如果我按字面意思解释您的要求,那将是
Address = a.First + (a.Middle == null || + a.Last == null) ? "" : a.Middle + a.Last;
但这意味着如果Last
为null但Middle
不是,则for的值将Last
被忽略,这似乎很奇怪。我怀疑你只是想用空字符串代替任何null
Address = a.First + a.Middle + a.Last;
由于将空字符串与非空字符串连接在一起时,它们在.NET中被视为空字符串(与SQL不同)。
还是应该在MyUserD中创建单独的属性以表示数据库中的内容?
您当然可以做到这一点,只需添加一个可以即时进行串联的属性。这样,您可以独立设置部分,而不必解析串联的字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句