mar*_*rry 8 .net c# linq lambda
opencall.Priority =
averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.SingleOrDefault().Priority;
Run Code Online (Sandbox Code Playgroud)
上面的lambda语句返回一些空值,因为ProblemCode并不总是保证在averages列表中.
如何重写此语句,以便在这种情况下将opencall.Priority设置为""而不是应用程序抛出错误?
Tim*_*ter 16
您必须为引用类型提供新的默认值,而不是null.
opencall.Priority = averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.Select(x => x.Priority)
.DefaultIfEmpty("")
.Single();
Run Code Online (Sandbox Code Playgroud)
那Priority是一个string?请注意,您不再需要SingleOrDefault,因为查询永远不会抛出异常,因为当您提供a时它是空的DefaultIfEmpty.