我正在创建各种联系人的SelectList
。我希望显示的文本是FirstName
,MiddleInit
(如果可能)和LastName
的组合。
IEnumerable<SelectListItem> items = contacts
.Select(r => new SelectListItem()
{
Value = r.ContactID.ToString(),
Text = r.FirstName + " "
+ string.IsNullOrEmpty(r.MiddleInit) ? r.MiddleInit + ". " : ""
+ r.LastName
});
我收到错误消息:
Error 4 Cannot implicitly convert type 'string' to 'bool' C:\Users\cu551d\Documents\Visual Studio 2010\Projects\WVM\WVM\Controllers\SOWController.cs 181 15 WVM
我猜想这与我的语法有关。我可以在C#中执行类似的操作吗?
另外,我应该在
Trim()
上包含MiddleInit
语句吗?我认为此错误非常奇怪,因为IsNullOrEmpty
实际上确实返回了 bool 值。我也尝试过(string.IsNullOrEmpty(r.MiddleInit) == true ) ..
最佳答案
尝试在括号中分组。看起来您正在向后执行条件运算符:
IEnumerable<SelectListItem> items = contacts
.Select(r => new SelectListItem()
{
Value = r.ContactID.ToString(),
Text = r.FirstName + " " +
(string.IsNullOrEmpty(r.MiddleInit) ? "" : (r.MiddleInit + ". ")) +
r.LastName
});
另一种技术
由于无论如何都将其转换为空字符串,因此您也可能会考虑以下情况:
Text = r.FirstName + " " + (r.MiddleInit ?? "") + r.LastName
??
称为Null Coalescing Operator
。如果该值不为null,它将返回左侧的任何内容,否则返回右侧的任何内容。http://msdn.microsoft.com/en-us/library/ms173224.aspx
编辑:虽然比较干净,但是这对于您的情况不太有用,因为您需要在初始字母之后加上句点。但是要知道它确实存在!
关于c# - 用三元运算符进行字符串连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13713212/