2014-12-09 153 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鍵<專輯,布爾>>列表 並創建自定義比較