【发布时间】:2015-04-18 19:08:06
【问题描述】:
假设我在一个集合上有以下表达式:
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变成委托即可。
-
没有相当复杂的方法可以做到这一点,不。但是,不难检测其中一个的结果是否是另一个的子集。
-
是的,有办法。但这需要做一些事情。你确定你需要这样做吗?难道没有办法在它被放入表达式之前做到这一点吗?
-
@CommuSoft 和乔纳森认为我还没有列举它。我只有两个空间的定义,我试图找出一个空间是否包含另一个空间。