Extension Methods–Outros dados importantes

Ao fazer referência ao namespace System.Linq no código os Extension Methods deste são acrescentados para as collections dentro do código e tornando-se acessíveis pelo intelisense do Visual Studio. Veja este exemplo:

namespace CodigosExemplo
{
public class Class1
{
public void Mostrar()
{
int[] numeros = new int[] { 1, 7, 2, 11, 5, 13 };
}
}
}



Neste exemplo podemos usar um Extension Method para fazer a ordenação dos números bastando incluir o namespace:




using System.Linq;



Observe na figura os métodos de extensão já habilitados no Intelisense do Visual Studio.



image



Assim para ordenar o array basta mudar o código para o seguinte:




using System.Linq;

namespace CodigosExemplo
{
public class Class1
{
public void Mostrar()
{
int[] numeros = new int[] { 1, 7, 2, 11, 5, 13 };
var ordena = numeros.OrderBy(n => n );
}
}
}



Com este recurso é possível descobrir o índice de um elemento dentro do vetor, o que não pode ser feito sem usar os Extension Methods.




//Exemplo de Extension Methods
//Requer System.Linq
string[] nomes = new string[] { "Amanda", "Tereza", "Flora", "Jurema", "Tatiana", "Jessica" };
//Configura a pesquisa
string pesquisa = "Flora";
//Mostra qual a posição no índice (resultado 2)
Console.WriteLine("Encontrou {0} na posição {1}.", pesquisa, nomes.ToList().FindIndex(s => s == pesquisa));
pesquisa = "Ana";
//Mostra qual a posição no índice (resultado -1)
Console.WriteLine("Encontrou {0} na posição {1}.",
pesquisa, nomes.ToList().FindIndex(s => s == pesquisa));



Este código tem uma particularidade: para poder fazer a consulta, o array é convertido para uma lista com o método "ToList()", depois disso, então é possível fazer a busca pelo índice com o método "FindIndex()" aplicável para listas genéricas (List<T>).