【发布时间】:2015-08-27 20:37:20
【问题描述】:
如何在具有 ForEach 和 Find 方法的 lambda 表达式中检查 NULL 值。
例如,我有一个下面的方法,它采用逗号分隔的值列表,遍历它们,并为每个值找到一个 SelectListItem,如果找到,则标记为 Selected。当没有找到匹配项并引发空引用异常时,就会出现问题。
private static void MarkListItemsSelected(string param, IList<SelectListItem> items)
{
var filters = param.Split(';');
filters.ToList()
.ForEach(x => items.ToList()
.Find(y => y.Text.ToUpper().Equals(x.ToUpper()))
.Selected = true);
}
【问题讨论】:
-
你不需要
ToList(),它会拆分成Array。 -
@Greg 数组没有
ForEach方法。 -
@juharr 他们没有,但它相当于
foreach,所以当你可以做foreach时,为什么要为ForEach创建一个List。 -
items.ToList() 绝对没有根据。
-
@Greg 我完全同意并认为
ForEach是可憎的,但您的评论听起来他们可以删除ToList。