LINQ 表达式,用于检查集合并在检查失败时设置默认值
本文关键字:检查 失败 设置 默认值 集合 表达式 用于 LINQ 合并 | 更新日期: 2023-09-27 18:33:51
我有一个像这样的 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;
只要用户请求上的"状态"属性是四个属性之一,就可以正常工作。当它不是四个时,它将抛出一个空异常。
在这种情况下,msStatus 应设置为"新建",第一个选项,当要检查的值时因为不是四个中的一个。
我该如何处理?
提前谢谢。
只需将结果存储到变量中并检查 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;
}
尝试使用 FirstOrDefault
如果不存在,它将返回 null。
var statusItem = msStatus.FirstOrDefault(m => m.Value == UserRequest.Status.ToString())
if (statusItem != null)
{
// here you canaccess statusItem.Selected safety
}
您可以
检查Value
的空值或空值,如下所示:
(m => String.IsNullOrEmpty(Value) || m.Value == UserRequest.Status.ToString());
如果Value
为空或为空,则将其忽略。
你可以让一个标志是否匹配,然后你可以设置它::
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());
}