我目前正在寫一個擴展方法,但似乎並沒有被作爲操作意圖。我們陷得更深層次之前,這裏是我的代碼有:C#擴展方法
public static void Remove<T>(this IEnumerable<T> source, Func<T, bool> predicate)
{
var items = source.Where(predicate);
source = source.Where(t => !items.Contains(t));
}
的願望是,我可以調用任何IEnumerable和匹配的謂詞,然後從集合中刪除所有項目這個擴展方法。我厭倦了通過集合迭代來找到匹配的項目,然後一次刪除它們,以避免在通過它枚舉時改變集合...
無論如何...當我逐步完成代碼時,似乎工作。在現有方法之前,source
具有正確數量的刪除項目。但是,當我返回調用代碼時,所有項目仍然存在於我的原始IEnumerable對象中。有小費嗎?
由於提前,
桑尼
還有一件事...... Contains方法是我寫的另一個擴展方法(它按照預期工作)。 –
順便說一句,不知道你是否知道它,但LINQ確實有一個Contains方法:http://msdn.microsoft.com/en-us/library/bb357185.aspx –