假设我在集合上有以下表达式:
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"));
Run Code Online (Sandbox Code Playgroud)
有没有办法比较这两个表达式并推断出第二个表达式是运行时第一个表达式的子集?没有枚举或其他任何东西.我只是有表达式,我试图找出这些表达式是否相交或相互包含.
你必须将每个Expression分解为所有可能的继承类型(MethodCallExpression,ConditionalExpression等),然后并行地进行每个分解并检查每个可能的参数......编码会有点长......你可以启发来自ExpressionEqualityComparer
| 归档时间: |
|
| 查看次数: |
1884 次 |
| 最近记录: |