2009-10-05 15 views
0

我有一個HTMLAnchor對象(HTMLAnchor是來自外部API的對象)的列表<>。我想排除點擊某些鏈接,因爲它們是用於註銷等。使用LINQ的Except <>方法與來自外部API的對象

使用LINQ,我可以使用Except運算符。但是,在這裏(http://msdn.microsoft.com/en-us/vcsharp/aa336761.aspx#except1),使用自定義類型(產品,如果我沒記錯的話)的示例不使用Except的重載版本。

此外,如果我使用的是我未定義的類型,那麼規則是否會更改?我想寫的實現IEquality的類有相同的名稱,我想在我的泛型集合(HtmlAnchor)中排除?

感謝

回答

1

如果要比較使用默認的錨equals方法,在這種情況下,將可能給你參考平等,你不需要做任何事情:只要通過這組錨排除:

anchors.Except(anchorsToExclude); 

如果要排除的序列成員不會引用相等(或者任何HtmlAnchor.Equals認爲相等),則要實現的接口爲IEqualityComparer<T>。這恰好允許您爲未定義的類型提供自定義的相等比較,因此規則不會更改 - 您只需使用Except的適當重載。

因此,您將創建一個名爲例如HtmlAnchorEqualityComparer實現IEqualityComparer<HtmlAnchor>,並通過一個實例,除以下項外:

anchors.Except(anchorsToExclude, new HtmlAnchorEqualityComparer()) 
相關問題