1
resposta

Clausula where em Xml - Não funcionou

var queryExercicio = from g in root.Elements("Generos").Elements("Genero") join m in root.Elements("Musicas").Elements("Musica") on g.Element("GeneroId").Value equals m.Element("GeneroId").Value where m.Element("Nome").Value.Contains("Rock") select new { MusicaID = root.Element("Musicas").Element("Musica").Element("MusicaId").Value, NomeMusica = root.Element("Musicas").Element("Musica").Element("Nome").Value, NomeGenero = root.Element("Generos").Element("Genero").Element("Nome").Value

                             };
1 resposta

Olá, Leonardo

Tenta ajustar a sua consulta para utilizar o método Descendants ao invés de Elements para buscar os elementos "Genero" e "Musica". Além disso, você pode utilizar o método FirstOrDefault para obter apenas o primeiro resultado da consulta.

Aqui está um exemplo de como você pode ajustar o seu código:

var queryExercicio = (from g in root.Descendants("Genero")
                      join m in root.Descendants("Musica")
                      on g.Element("GeneroId").Value equals m.Element("GeneroId").Value
                      where m.Element("Nome").Value.Contains("Rock")
                      select new
                      {
                          MusicaID = m.Element("MusicaId").Value,
                          NomeMusica = m.Element("Nome").Value,
                          NomeGenero = g.Element("Nome").Value
                      }).FirstOrDefault();

Dessa forma, a variável queryExercicio irá conter o primeiro resultado da consulta, que corresponde à música que contém a palavra "Rock" no nome.

Espero que essa solução te ajude! Se tiver mais alguma dúvida, é só me dizer.

Espero ter ajudado e bons estudos!