Enquanto procurava uma resposta para esta pergunta, I'encontrei outras similares utilizando LINQ mas não fui capaz de compreendê-las completamente (e assim, implementá-las), como I'não estou familiarizado com ela. O que eu gostaria de fazer, basicamente, é isto:
Sinceramente não sei como o faria... 39; não sei como o faria. O que eu posso inventar é isto (não funciona, é claro):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
Eu sei porque não funciona:
myList.Contains()
não retorna `true', pois irá verificar se todo um elemento da lista corresponde à string que eu especifiquei.myList.IndexOf()
não irá encontrar uma ocorrência, uma vez que, como é o caso novamente, irá verificar se um elemento da lista corresponde à string especificada.Ainda assim, não faço ideia de como resolver este problema, mas imagino que I'terá de usar o LINQ como sugerido em perguntas semelhantes à minha. Dito isto, se esse'é o caso aqui, I'gostaria que o respondedor me explicasse o uso do LINQ no exemplo deles (como eu disse, eu tenho'não me incomodado com isso no meu tempo com C#). Obrigado de antemão, pessoal (e garotas?).
EDITAR: Eu encontrei uma solução; basta fazer um loop através da lista, verificar se o elemento atual contém a string e então definir uma string igual ao elemento atual. I'estou me perguntando, no entanto, se existe uma maneira mais eficiente do que esta?
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
Você deve poder usar Linq aqui:
var matchingvalues = myList
.Where(stringToCheck => stringToCheck.Contains(myString));
Se você simplesmente desejar devolver o primeiro item correspondente:
var match = myList
.FirstOrDefault(stringToCheck => stringToCheck.Contains(myString));
if(match != null)
//Do stuff