LINQ中的反射布尔属性

本文关键字:布尔 属性 反射 LINQ | 更新日期: 2023-09-27 17:58:50

我想使用反射来更好地编写这段代码。我现在有了IsSearchableIsEditable函数,但我可以重构这段代码来获得部分c.可搜索和c.可编辑吗?

我有10个这样的功能,只需要一个。唯一不同的部分是要检查的布尔属性c.Searchablec.Editable

  bool searchable = conditions
                .Select(c => c.Searchable)
                .SingleOrDefault();
  bool editable = conditions
                    .Select(c => c.Editable)
                    .SingleOrDefault();

LINQ中的反射布尔属性

使用反射是过分的。假设您正在检查列表中是否有与EditableSearchable匹配的ANY条件,那么您可能只应该使用Any()语法。。。

你可以使用这样的方法

public bool CheckCondition(IEnumerable<Condition> conditions, Func<Condition, bool> predicate)
{
    return conditions.Any(predicate);
}

并像一样使用

var isSet = CheckCondition(conditions, c => c.Editable);

但你并没有为自己节省多少钱。你还不如每次都写Any()。例如,

var isEditable = conditions.Any(c => c.Editable);