Pergunta

Eu estou tentando fazer um loop através dos resultados de uma função que está retornando um objeto anônimo dos resultados.

public static object getLogoNav()
{
  XDocument loaded = XDocument.Load(HttpContext.Current.Request.MapPath("~/App_Data/LOGO_NAV_LINKS.xml"));

  var query = from x in loaded.Elements().Elements()
              select new
              {
                 Name = x.FirstAttribute.Value,
                 Value = x.Value
              };

  return query;
}

página CodeBehind:

  var results = Common.getLogoNav();
  foreach(var nav in results) {
     string test = nav.Name;
  }
Foi útil?

Solução

Você não pode ter uma classe anônima como um tipo de retorno em C # 3 (e 4 para que o assunto) e você não pode converter um objeto para um tipo anônimo. Seus três opções são:

  • Fazer o loop dentro do escopo da classe anônima (na maioria das vezes, este é o método)
  • A projeção para objeto e usando a reflexão (lento e não muito fácil de fazer, a menos que você faça alguma mágica árvore de expressão)
  • A conversão para uma classe chamada e retornando e exemplo disso.
  • (Em C # 4) você pode criar algum tipo dinâmica mágica para conseguir um efeito similar, mas que seria realmente o mesmo que a opção 2, com um pouco de açúcar sintático.

Outras dicas

Jon Skeet escreveu um entrada em retornar tipo anônimo. Eu espero que você não usá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top