none
Consulta com Linq retornando um tipo especifico RRS feed

  • Pergunta

  • Opa.. 

    Tenho um método que retorna uma lista genérica do tipo da classe livros.

    estou tentando fazer uma consulta linq com join de 2 tabelas, livros e autores, e estou com dificuldade de converter o query para o tipo da minha classe.. Faço assim:

    public static List<AutoresClass> get()
    {
    
    	var query = from  autor in db.autores 
    					join livro in db.livros on autor.idAutor equals livro.IdAutor
    				select new 
    				{ 
    					nome = autor.Nome,
    					titulo = livro.titulo 
    				};
    
    	List<AutoresClass> listaTable = new List<AutoresClass>();
    
    	listaTable = query.ToList();
    
    	return listaTable;
    }

    retorna o seguinte erro:

    Error 1 Cannot implicitly convert type 'System.Collections.Generic.List<AnonymousType#1>' to 'System.Collections.Generic.List<projeto.Class.Autores>'


    valeu!!

    sábado, 26 de outubro de 2013 18:30

Respostas

  • Só uma dica!

    Imagine se você quiser fazer tudo assim! quantas classes você faria só para carregar um tipo de dado e de vez em quando!?

    Repense o Objetos Anônimos já foram criados para isso...

    Não precisa! só é um charme a mais kkkkkkkkkkkkkkkkkkkk se é que me entende!

    Credito os pontos para o Diego!


    Fúlvio Cezar Canducci Dias


    sábado, 26 de outubro de 2013 23:24
  • Estranho,

    converter a projeção da primeira tabela para  AsEnumerable() para ver o que da !!!!!!!!!!!!!

    public class AutoresClass
        {
        	public int idAutor { get; set; }
    		public string nome { get; set; }
    		public string titulo { get; set; }
           
        }
    	
    public Class AutoresClassDb
    {
    		
    	public static DataBase getDataBase()
            {
                DataBase db = new DataBase();
                if (db.DatabaseExists() == false)
                {
                    db.CreateDatabase();
                }
                return db;
            }
    		
    		public static List<AutoresClass>get()
            {
    
                var query = (from autor in db.autores.AsEnumerable()
                            join livro in db.livros on autor.idAutor equals livro.IdAutor
                            select new AutoresClass
                            {
                                nome = autor.Nome,
                                titulo = livro.titulo
                            }).ToList();
    
    
                return query;
            }
    	
    }    



    Diego Almeida Barreto
    System Analyst / Software Developer

    • Sugerido como Resposta Giovani Cr quarta-feira, 30 de outubro de 2013 11:53
    • Marcado como Resposta Giovani Cr sexta-feira, 1 de novembro de 2013 13:15
    domingo, 27 de outubro de 2013 03:47

Todas as Respostas

  • Da maneira que vc fez pede que vc trabalhe com tipos anônimos da sua classe !!!!

    tenta isso:

            public static List<AutoresClass> get()
            {
    
                var query = (from autor in db.autores
                            join livro in db.livros on autor.idAutor equals livro.IdAutor
                            select new AutoresClass
                            {
                                nome = autor.Nome,
                                titulo = livro.titulo
                            }).ToList();
    
    
                return query;
            }



    Diego Almeida Barreto
    System Analyst / Software Developer

    sábado, 26 de outubro de 2013 18:59
  • Obrigado por retornar. Fiz a tua sugestão e retornou este erro:

    Explicit construction of entity type 'Projeto.Class.AutoresClass' in query is not allowed.

    vlw!

    sábado, 26 de outubro de 2013 19:32
  • certu,

    posta ai o que vc tem na sua classe AutoresClass ... para fazermos certo !!!!!!!!!!!!!!!!



    Diego Almeida Barreto
    System Analyst / Software Developer

    sábado, 26 de outubro de 2013 20:26
  • é basicamente isso.

        public class AutoresClass
        {
        	public int idAutor { get; set; }
    		public string nome { get; set; }
    		public string titulo { get; set; }
           
        }
    	
    public Class AutoresClassDb
    {
    		
    	public static DataBase getDataBase()
            {
                DataBase db = new DataBase();
                if (db.DatabaseExists() == false)
                {
                    db.CreateDatabase();
                }
                return db;
            }
    		
    		public static List<AutoresClass>get()
            {
    
                var query = (from autor in db.autores
                            join livro in db.livros on autor.idAutor equals livro.IdAutor
                            select new AutoresClass
                            {
                                nome = autor.Nome,
                                titulo = livro.titulo
                            }).ToList();
    
    
                return query;
            }
    	
    }

    valeu

    sábado, 26 de outubro de 2013 20:39
  • Só uma dica!

    Imagine se você quiser fazer tudo assim! quantas classes você faria só para carregar um tipo de dado e de vez em quando!?

    Repense o Objetos Anônimos já foram criados para isso...

    Não precisa! só é um charme a mais kkkkkkkkkkkkkkkkkkkk se é que me entende!

    Credito os pontos para o Diego!


    Fúlvio Cezar Canducci Dias


    sábado, 26 de outubro de 2013 23:24
  • Estranho,

    converter a projeção da primeira tabela para  AsEnumerable() para ver o que da !!!!!!!!!!!!!

    public class AutoresClass
        {
        	public int idAutor { get; set; }
    		public string nome { get; set; }
    		public string titulo { get; set; }
           
        }
    	
    public Class AutoresClassDb
    {
    		
    	public static DataBase getDataBase()
            {
                DataBase db = new DataBase();
                if (db.DatabaseExists() == false)
                {
                    db.CreateDatabase();
                }
                return db;
            }
    		
    		public static List<AutoresClass>get()
            {
    
                var query = (from autor in db.autores.AsEnumerable()
                            join livro in db.livros on autor.idAutor equals livro.IdAutor
                            select new AutoresClass
                            {
                                nome = autor.Nome,
                                titulo = livro.titulo
                            }).ToList();
    
    
                return query;
            }
    	
    }    



    Diego Almeida Barreto
    System Analyst / Software Developer

    • Sugerido como Resposta Giovani Cr quarta-feira, 30 de outubro de 2013 11:53
    • Marcado como Resposta Giovani Cr sexta-feira, 1 de novembro de 2013 13:15
    domingo, 27 de outubro de 2013 03:47