LINQ设置值(如果不为空)

LINQ设置值(如果不为空),linq,null,return-value,Linq,Null,Return Value,我有以下代码: model.Attendees.Single(p => p.Value == this.CurrentPerson.PersonId.ToString() && p.Disabled == false).Selected = true; 此人被禁用,因此在尝试将Selected设置为true时返回空引用 是否有LINQ方法处理此问题,或者我是否应该执行if not null then set value。。我已经尝试了Single和S

我有以下代码:

model.Attendees.Single(p => p.Value == this.CurrentPerson.PersonId.ToString() && p.Disabled == false).Selected = true;           
此人被禁用,因此在尝试将Selected设置为true时返回空引用

是否有LINQ方法处理此问题,或者我是否应该执行if not null then set value。。我已经尝试了Single和SingleOrDefault

最好的方法是(如注释所示)首先使用SingleOrDefault获取项目

var item = model.Attendees.SingleOrDefault(p => p.Value == this.CurrentPerson.PersonId.ToString() && p.Disabled == false);     
然后检查项目是否为空,如果不是,则使用如下对象:

if(item != null)
{
    item.Selected = true;
}

我假设您的目标是更新数据库以将与会者设置为选中?关于你想做什么的更多细节将帮助我们回答这个问题。老实说,IMHO最好的方法是在没有禁用p.Disabled条件的情况下执行
SingleOrDefault
。然后执行空检查和禁用检查,并处理通知用户它们已禁用。。否则,将变量.selected设置为true并保存。