gpt4 book ai didi

C# 表达式比较

转载 作者:太空狗 更新时间:2023-10-29 20:09:51 24 4
gpt4 key购买 nike

假设我在集合中有以下表达式:

var people = new List<Person>
{
new Person {FullName = "Some Dude", Age = 45},
new Person {FullName = "Another Dude", Age = 28},
new Person {FullName = "Some Other Dude", Age = 36}
};

var filtered = people.Where(person => person.Age > 28 && person.FullName.StartsWith("So"));
var narrowlyFiltered = people.Where(person => person.Age > 36 && person.FullName.StartsWith("Some"));

有没有办法比较这两个表达式并推断第二个表达式是运行时第一个表达式的子集?无需枚举或其他任何内容。我只有表达式,我试图找出这些表达式是否相互交叉或包含。

最佳答案

您必须将每个 Expression 分解为所有可能的继承类型(MethodCallExpression、ConditionalExpression 等),然后并行进行每个分解并检查每个可能的参数……编码会有点长……你可以从ExpressionEqualityComparer中得到启发。

关于C# 表达式比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28572486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com