2014-12-09 110 views
4

我有我想检查如果列表包含特定谓词谓词比较谓词

public List<Func<Album, bool>> Predicates { get; set; } 

的列表。

我做的是这样的:

bool check = Predicates.Contains(x=>x.AlbumName == "Winter"); 

但即使是在这样的列表的谓词这个始终返回false。我认为这是因为谓词是匿名方法,每种方法都是独特的,但仍然可以以某种方式比较它们吗?

+2

@leppie:我不认为这会有什么帮助。 – 2014-12-09 11:55:45

+0

Predicates.Any()“可能”帮助,如果它用于测试目的:-) – Sruti 2014-12-09 11:58:23

+0

@Sruti展开“可能”。 Predicates.Any'如何帮助这里? – 2014-12-09 12:06:26

回答

5

恐怕答案基本上是“不”。如果你有代表树而不是代表,那么你可以可能比较那些努力,但基本上你已经有单独的方法的参考。您需要在方法内部检查IL以比较它们是否相同。

当然,如果你有一组谓词操作的对象,你可以找出是否有任何谓词与你的“目标”谓词匹配相同的子集,但这与测试谓词是否相同实际上是一样的。

0

切换到 表达< Func键<专辑,布尔>>列表 并创建自定义比较