对 list\set 个元素执行条件
Execute condition over a list\set of elements
假设我有一个元素列表:["A", "B", "C", "X"]
以及用于检查该列表的动态条件,例如:"A" && "D"
,因此 "A" 和 "D" 必须是满足条件的列表的一部分。
大多数 IEnumerable
命令确实对单个元素应用 Func
或 Predicate
,而在我的例子中,我希望将条件应用于整个列表。
如何验证给定列表是否满足动态条件,list.Meets(condition)
?
我尝试将字符串条件转换为 Expression
,但解决方案太复杂了。
谢谢
你可以使用 Linq 做这样的事情
public bool IsMatch(char[] arrToCheck, char[] condition)
{
return condition.All(ch => arrToCheck.IndexOf(ch) > -1);
}
你也可以使用扩展方法
public static bool IsMatch(this char[] arrToCheck, char[] condition)
{
return condition.All(ch => arrToCheck.IndexOf(ch) > -1);
}
所以你可以这样消费
myArray.IsMatch(['A', 'D']);
我终于构建了一个小条件解析器。
解析器能够处理包含 And 或 Or 逻辑表达式的字符串条件,也能够处理括号。
这里是 link 的解决方案:
https://github.com/aberbegall/ConditionParser
假设我有一个元素列表:["A", "B", "C", "X"]
以及用于检查该列表的动态条件,例如:"A" && "D"
,因此 "A" 和 "D" 必须是满足条件的列表的一部分。
大多数 IEnumerable
命令确实对单个元素应用 Func
或 Predicate
,而在我的例子中,我希望将条件应用于整个列表。
如何验证给定列表是否满足动态条件,list.Meets(condition)
?
我尝试将字符串条件转换为 Expression
,但解决方案太复杂了。
谢谢
你可以使用 Linq 做这样的事情
public bool IsMatch(char[] arrToCheck, char[] condition)
{
return condition.All(ch => arrToCheck.IndexOf(ch) > -1);
}
你也可以使用扩展方法
public static bool IsMatch(this char[] arrToCheck, char[] condition)
{
return condition.All(ch => arrToCheck.IndexOf(ch) > -1);
}
所以你可以这样消费
myArray.IsMatch(['A', 'D']);
我终于构建了一个小条件解析器。 解析器能够处理包含 And 或 Or 逻辑表达式的字符串条件,也能够处理括号。
这里是 link 的解决方案: https://github.com/aberbegall/ConditionParser