我有一个像这样的SelectedListItem:
private List<SelectListItem> GetStatus()
{
List<SelectListItem> msStatuses = new List<SelectListItem>() {
new SelectListItem() { Text = "New", Value = "50342"},
new SelectListItem() { Text = "In Process", Value = "50343"},
new SelectListItem() { Text = "Approved", Value = "50345"},
new SelectListItem() { Text = "Rejected", Value = "50344"}};
return msStatuses;
}
使用传入值检查,并在找到匹配项时将msStatus设置为相同:
msStatus.Find(m => m.Value == UserRequest.Status.ToString()).Selected = true;
只要&#39;状态&#39; UserRequest上的属性是四个中的一个。 如果它不是四个,它将抛出一个空的异常。
在这种情况下,当要检查的值时,应将msStatus设置为&#39; New&#39;,第一个选项 因为不是四个中的一个。
我该如何处理?
提前致谢。
答案 0 :(得分:1)
只需将结果存储到变量中并检查null
var item = msStatus.Find(m => m.Value == UserRequest.Status.ToString());
if(item == null)
{
// set selected item to New
msStatus.Find(m => m.Value == "New").Selected = true;
}
else
{
item.Selected = true;
}
答案 1 :(得分:1)
尝试使用FirstOrDefault
,如果它不存在,将返回null。
var statusItem = msStatus.FirstOrDefault(m => m.Value == UserRequest.Status.ToString())
if (statusItem != null)
{
// here you canaccess statusItem.Selected safety
}
答案 2 :(得分:-1)
您可以检查Value
的空值或空值,如下所示:
(m => String.IsNullOrEmpty(Value) || m.Value == UserRequest.Status.ToString());
如果Value
为空或为null,则会被忽略。
答案 3 :(得分:-1)
你可以制作一个标志,无论它是否匹配;然后你可以设置它::
bool IsstatusPresent= msStatus.Any(x=>m.Value == UserRequest.Status.ToString());
if(!IsstatusPresent)
{
return msStatus.Find(m => m.Value == "New").Selected;
}
else
{
return msStatus.Find(x=>m.Value == UserRequest.Status.ToString());
}