Enquanto procurava por uma resposta para essa pergunta, encontrei outras usando o LINQ, mas não consegui entendê-las completamente (e, portanto, implementá-las), pois não estou familiarizado com ela. O que eu gostaria, basicamente, é o seguinte:
- Verifique se algum elemento de uma lista contém uma sequência específica.
- Se isso acontecer, obtenha esse elemento.
Sinceramente, não sei como eu faria isso. O que posso pensar é isso (não está funcionando, é claro):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
Eu sei por que não funciona:
myList.Contains()
não retornatrue
, pois verificará se um elemento inteiro da lista corresponde à sequência especificada.myList.IndexOf()
não encontrará uma ocorrência, pois, como é o caso novamente, ele verificará se há um elemento correspondente à string.
Ainda assim, não tenho idéia de como resolver esse problema, mas acho que terei que usar o LINQ conforme sugerido em perguntas semelhantes às minhas. Dito isto, se esse for o caso aqui, eu gostaria que o respondente me explicasse o uso do LINQ no exemplo deles (como eu disse, não me importei com isso no meu tempo com C #). Agradeço desde já pessoal (e galões?).
EDIT: Eu vim com uma solução; basta percorrer a lista, verificar se o elemento atual contém a sequência e defina uma sequência igual ao elemento atual. Gostaria de saber, porém, existe uma maneira mais eficiente do que isso?
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
myString
. No loop atual, você obterá o último elemento. Depende de você se você deseja encontrar o primeiro ou o último, se você apenas deseja encontrar o primeiro e, em seguida, interrompa o ciclo depois de encontrar o item.