Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Método Enumerable.Contains<TSource> (IEnumerable<TSource>, TSource, IEqualityComparer<TSource>)

Determina se uma sequência contém um elemento especificado usando IEqualityComparer<T>especificado.

Namespace:  System.Linq
Assembly:  System.Core (em System.Core.dll)

public static bool Contains<TSource>(
	this IEnumerable<TSource> source,
	TSource value,
	IEqualityComparer<TSource> comparer
)

Parâmetros de tipo

TSource

O tipo dos elementos de source.

Parâmetros

source
Tipo: System.Collections.Generic.IEnumerable<TSource>
Uma sequência na qual para localizar um valor.
value
Tipo: TSource
O valor a ser localizado na sequência.
comparer
Tipo: System.Collections.Generic.IEqualityComparer<TSource>
Um comparador de igualdade para comparar valores.

Valor de retorno

Tipo: System.Boolean
true se a sequência de origem conterá um elemento que tem o valor especificado; caso contrário, false.

Observação de uso

No Visual Basic e no C#, você pode chamar esse método como um método de instância em qualquer objeto do tipo IEnumerable<TSource>. Quando você usar a sintaxe de método de instância para chamar esse método, omita o primeiro parâmetro. Para obter mais informações, consulte Métodos de extensão (Visual Basic) ou Métodos de extensão (Guia de Programação em C#).

ExceçãoCondição
ArgumentNullException

source é null.

A enumeração é encerrada assim que um elemento correspondente é encontrado.

Seomparer c é null, o comparador padrão de igualdade, Default, é usado para comparar os elementos com o valor especificado.

O exemplo a seguir mostra como implementar um comparador de igualdade que pode ser usado no método do Contains .


public class Product
{
    public string Name { get; set; }
    public int Code { get; set; }
}

// Custom comparer for the Product class
class ProductComparer : IEqualityComparer<Product>
{
    // Products are equal if their names and product numbers are equal.
    public bool Equals(Product x, Product y)
    {

        //Check whether the compared objects reference the same data.
        if (Object.ReferenceEquals(x, y)) return true;

        //Check whether any of the compared objects is null.
        if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
            return false;

        //Check whether the products' properties are equal.
        return x.Code == y.Code && x.Name == y.Name;
    }

    // If Equals() returns true for a pair of objects 
    // then GetHashCode() must return the same value for these objects.

    public int GetHashCode(Product product)
    {
        //Check whether the object is null
        if (Object.ReferenceEquals(product, null)) return 0;

        //Get hash code for the Name field if it is not null.
        int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = product.Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }

}


Depois que você implementa esse comparador, você pode usar uma sequência de objetos de Product no método do Contains , conforme mostrado no exemplo a seguir.



        Product[] fruits = { new Product { Name = "apple", Code = 9 }, 
                               new Product { Name = "orange", Code = 4 }, 
                               new Product { Name = "lemon", Code = 12 } };

        Product apple = new Product { Name = "apple", Code = 9 };
        Product kiwi = new Product {Name = "kiwi", Code = 8 };

        ProductComparer prodc = new ProductComparer();

        bool hasApple = fruits.Contains(apple, prodc);
        bool hasKiwi = fruits.Contains(kiwi, prodc);

        Console.WriteLine("Apple? " + hasApple);
        Console.WriteLine("Kiwi? " + hasKiwi);

        /*
            This code produces the following output:

            Apple? True
            Kiwi? False
        */    



.NET Framework

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8

.NET para aplicativos do Windows Phone

Com suporte em: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft