我有我想檢查如果列表包含特定謂詞謂詞比較謂詞
public List<Func<Album, bool>> Predicates { get; set; }
的列表。
我做的是這樣的:
bool check = Predicates.Contains(x=>x.AlbumName == "Winter");
但即使是在這樣的列表的謂詞這個始終返回false。我認爲這是因爲謂詞是匿名方法,每種方法都是獨特的,但仍然可以以某種方式比較它們嗎?
我有我想檢查如果列表包含特定謂詞謂詞比較謂詞
public List<Func<Album, bool>> Predicates { get; set; }
的列表。
我做的是這樣的:
bool check = Predicates.Contains(x=>x.AlbumName == "Winter");
但即使是在這樣的列表的謂詞這個始終返回false。我認爲這是因爲謂詞是匿名方法,每種方法都是獨特的,但仍然可以以某種方式比較它們嗎?
恐怕答案基本上是「不」。如果你有代表樹而不是代表,那麼你可以可能比較那些努力,但基本上你已經有單獨的方法的參考。您需要在方法內部檢查IL以比較它們是否相同。
當然,如果你有一組謂詞操作的對象,你可以找出是否有任何謂詞與你的「目標」謂詞匹配相同的子集,但這與測試謂詞是否相同實際上是一樣的。
切換到 表達< Func鍵<專輯,布爾>>列表 並創建自定義比較
@leppie:我不認爲這會有什麼幫助。 – 2014-12-09 11:55:45
Predicates.Any()「可能」幫助,如果它用於測試目的:-) – Sruti 2014-12-09 11:58:23
@Sruti展開「可能」。 Predicates.Any'如何幫助這裏? – 2014-12-09 12:06:26