Beispiel #1
0
        private static void LinqToEntitiesCount()
        {
            using (var contexto = new AluraTunesEntities())
            {
                contexto.Database.Log = Console.WriteLine;

                var query = from faixa in contexto.Faixas
                            where faixa.Album.Artista.Nome == "Led Zeppelin"
                            select faixa;

                //var quantidade = query.Count();

                //Console.WriteLine("Led Zeppelin tem {0} músicas no banco de dados.", quantidade);

                var quantidade = contexto.Faixas.Count();

                Console.WriteLine("O banco de dados tem {0} faixas de música", quantidade);

                quantidade = contexto.Faixas.Where(f => f.Album.Artista.Nome == "Led Zeppelin").Count();

                Console.WriteLine("Led Zeppelin tem {0} músicas no banco de dados.", quantidade);

                quantidade = contexto.Faixas.Count(f => f.Album.Artista.Nome == "Led Zeppelin");

                Console.WriteLine("Led Zeppelin tem {0} músicas no banco de dados.", quantidade);
            }

            Console.ReadKey();
        }
Beispiel #2
0
        private static void LinqToEntitiesMinMaxAvg()
        {
            using (var contexto = new AluraTunesEntities())
            {
                contexto.Database.Log = Console.WriteLine;

                // 3 idas até o banco de dados

                //var maiorVenda = contexto.NotasFiscais.Max(nf => nf.Total);
                //var menorVenda = contexto.NotasFiscais.Min(nf => nf.Total);
                //var vendaMedia = contexto.NotasFiscais.Average(nf => nf.Total);

                //Console.WriteLine("A maior venda é de R$ {0}", maiorVenda);
                //Console.WriteLine("A menor venda é de R$ {0}", menorVenda);
                //Console.WriteLine("A venda média é de R$ {0}", vendaMedia);

                var vendas = (from notaFiscal in contexto.NotasFiscais
                              group notaFiscal by 1 into agrupado
                              select new
                {
                    MaiorVenda = agrupado.Max(nf => nf.Total),
                    MenorVenda = agrupado.Min(nf => nf.Total),
                    VendaMedia = agrupado.Average(nf => nf.Total)
                }).Single();

                // 1 ida até o banco de dados

                Console.WriteLine("A maior venda é de R$ {0}", vendas.MaiorVenda);
                Console.WriteLine("A menor venda é de R$ {0}", vendas.MenorVenda);
                Console.WriteLine("A venda média é de R$ {0}", vendas.VendaMedia);
            }

            Console.ReadKey();
        }
Beispiel #3
0
        private static void LinqMetodosExtensao()
        {
            using (var contexto = new AluraTunesEntities())
            {
                contexto.Database.Log = Console.WriteLine;

                var vendaMedia = contexto.NotasFiscais.Average(nf => nf.Total);

                Console.WriteLine("Venda Média: {0}", vendaMedia);

                var query = from notaFiscal in contexto.NotasFiscais
                            select notaFiscal.Total;

                var contagem = query.Count();

                var queryOrdenada = query.OrderBy(total => total);

                var elementoCentral = queryOrdenada.Skip(contagem / 2).First();

                var mediana = elementoCentral;

                Console.WriteLine("Mediana: {0}", mediana);
            }

            Console.ReadKey();
        }
Beispiel #4
0
        private static void LinqToEntitiesSum()
        {
            using (var contexto = new AluraTunesEntities())
            {
                contexto.Database.Log = Console.WriteLine;

                var query = from itemNotaFiscal in contexto.ItemsNotasFiscal
                            where itemNotaFiscal.Faixa.Album.Artista.Nome == "Led Zeppelin"
                            select new
                {
                    totalDoItem = itemNotaFiscal.Quantidade * itemNotaFiscal.PrecoUnitario
                };

                //foreach (var itemNotaFiscal in query)
                //{
                //    Console.WriteLine(itemNotaFiscal.totalDoItem);
                //}

                var totalDoArtista = query.Sum(q => q.totalDoItem);

                Console.WriteLine("Total do artista: R$ {0}", totalDoArtista);
            }

            Console.ReadKey();
        }
Beispiel #5
0
        private static void LinqToEntitiesJoin()
        {
            using (var contexto = new AluraTunesEntities())
            {
                contexto.Database.Log = Console.WriteLine;

                var textoBusca = "Led";

                var query = from artista in contexto.Artistas
                            join album in contexto.Albums
                            on artista.ArtistaId equals album.ArtistaId
                            where artista.Nome.Contains(textoBusca)
                            select new
                {
                    NomeArtista = artista.Nome,
                    NomeAlbum   = album.Titulo
                };

                foreach (var item in query)
                {
                    Console.WriteLine("{0}\t{1}", item.NomeArtista, item.NomeAlbum);
                }
            }

            Console.ReadKey();
        }
Beispiel #6
0
        private static void LinqToEntitiesGroupBy()
        {
            using (var contexto = new AluraTunesEntities())
            {
                contexto.Database.Log = Console.WriteLine;

                var query = from itemNotaFiscal in contexto.ItemsNotasFiscal
                            where itemNotaFiscal.Faixa.Album.Artista.Nome == "Led Zeppelin"
                            group itemNotaFiscal by itemNotaFiscal.Faixa.Album into agrupado
                            let vendasPorAlbum = agrupado.Sum(a => a.Quantidade * a.PrecoUnitario)
                                                 orderby vendasPorAlbum descending
                                                 select new
                {
                    TituloDoAlbum = agrupado.Key.Titulo,
                    TotalPorAlbum = vendasPorAlbum
                };

                foreach (var agrupado in query)
                {
                    Console.WriteLine(
                        "{0}\t{1}",
                        agrupado.TituloDoAlbum.PadRight(40),
                        agrupado.TotalPorAlbum
                        );
                }
            }

            Console.ReadKey();
        }
Beispiel #7
0
        static void Main(string[] args)
        {
            using (var contexto = new AluraTunesEntities())
            {
                var textoBusca = "Led";

                var query = from a in contexto.Artistas
                            where a.Nome.Contains(textoBusca)
                            select a;

                foreach (var artista in query)
                {
                    Console.WriteLine("{0}\t{1}", artista.ArtistaId, artista.Nome);
                }

                var query2 = contexto.Artistas.Where(a => a.Nome.Contains(textoBusca));

                Console.WriteLine();

                foreach (var artista in query2)
                {
                    Console.WriteLine("{0}\t{1}", artista.ArtistaId, artista.Nome);
                }

                Console.ReadKey();
            }
        }
Beispiel #8
0
        static void Main(string[] args)
        {
            using (var contexto = new AluraTunesEntities())
            {
                var query = from inf in contexto.ItemsNotaFiscal
                            where inf.Faixa.Album.Artista.Nome == "Led Zeppelin"
                            group inf by inf.Faixa.Album into agrupado
                            let vendasPorAlbum = agrupado.Sum(a => a.Quantidade * a.PrecoUnitario)
                                                 orderby vendasPorAlbum
                                                 descending
                                                 select new
                {
                    TituloDoAlbum = agrupado.Key.Titulo,
                    TotalPorAlbum = vendasPorAlbum
                };

                foreach (var agrupado in query)
                {
                    Console.WriteLine("{0}\t{1}",
                                      agrupado.TituloDoAlbum.PadRight(40),
                                      agrupado.TotalPorAlbum);
                }

                Console.ReadKey();
            }
        }
Beispiel #9
0
        static void Main(string[] args)
        {
            using (var contexto = new AluraTunesEntities())
            {
                contexto.Database.Log = Console.WriteLine;

                var maiorVenda = contexto.NotasFiscais.Max(nf => nf.Total);
                var menorVenda = contexto.NotasFiscais.Min(nf => nf.Total);
                var vendaMedia = contexto.NotasFiscais.Average(nf => nf.Total);

                Console.WriteLine("A maior venda é de R$ {0}", maiorVenda);
                Console.WriteLine("A menor venda é de R$ {0}", menorVenda);
                Console.WriteLine("A venda média é de R$ {0}", vendaMedia);

                var vendas = (from nf in contexto.NotasFiscais
                              group nf by 1 into agrupado
                              select new
                {
                    maiorVenda = agrupado.Max(nf => nf.Total),
                    menorVenda = agrupado.Min(nf => nf.Total),
                    vendaMedia = agrupado.Average(nf => nf.Total)
                }).Single();

                Console.WriteLine("A maior venda é de R$ {0}", vendas.maiorVenda);
                Console.WriteLine("A menor venda é de R$ {0}", vendas.menorVenda);
                Console.WriteLine("A venda média é de R$ {0}", vendas.vendaMedia);
            }

            Console.ReadKey();
        }
Beispiel #10
0
        private static void LinqToEntitiesContextoJoinTakeLogSql()
        {
            using (var contexto = new AluraTunesEntities())
            {
                var query = from genero in contexto.Generos
                            select genero;

                foreach (var genero in query)
                {
                    Console.WriteLine("{0}\t{1}", genero.GeneroId, genero.Nome);
                }

                var faixaEGenero = from genero in contexto.Generos
                                   join faixa in contexto.Faixas
                                   on genero.GeneroId equals faixa.GeneroId
                                   select new { genero, faixa };

                faixaEGenero = faixaEGenero.Take(10);

                contexto.Database.Log = Console.WriteLine;

                Console.WriteLine();

                foreach (var item in faixaEGenero)
                {
                    Console.WriteLine("{0}\t{1}", item.faixa.Nome, item.genero.Nome);
                }
            }

            Console.ReadKey();
        }
Beispiel #11
0
        static void Main(string[] args)
        {
            using (var contexto = new AluraTunesEntities())
            {
                var query = from g in contexto.Generos
                            select g;

                foreach (var genero in query)
                {
                    Console.WriteLine("{0}\t{1}", genero.GeneroId, genero.Nome);
                }

                var faixaEgenero = from g in contexto.Generos
                                   join f in contexto.Faixas
                                   on g.GeneroId equals f.GeneroId
                                   select new { f, g };

                faixaEgenero = faixaEgenero.Take(10);

                contexto.Database.Log = Console.WriteLine;

                Console.WriteLine();
                foreach (var item in faixaEgenero)
                {
                    Console.WriteLine("{0}\t{1}", item.f.Nome, item.g.Nome);
                }
            }

            Console.ReadKey();
        }
 static void Main(string[] args)
 {
     using (var contexto = new AluraTunesEntities())
     {
         GetFaixas(contexto, "Led Zeppelin", "");
         Console.WriteLine();
         GetFaixas(contexto, "Led Zeppelin", "Graffiti");
     }
 }
Beispiel #13
0
        private static void LinqMediana()
        {
            using (var contexto = new AluraTunesEntities())
            {
                var mediana = contexto.NotasFiscais.Mediana(nf => nf.Total);

                Console.WriteLine("Mediana: {0}", mediana);
            }

            Console.ReadKey();
        }
Beispiel #14
0
        private static void GetFaixas(AluraTunesEntities contexto, string buscaArtista, string buscaAlbum)
        {
            var query = from faixa in contexto.Faixas
                        where faixa.Album.Artista.Nome.Contains(buscaArtista) &&
                        (!string.IsNullOrEmpty(buscaAlbum) ? faixa.Album.Titulo.Contains(buscaAlbum) : true)
                        orderby faixa.Album.Titulo, faixa.Nome descending
            select faixa;

            foreach (var faixa in query)
            {
                Console.WriteLine("{0}\t{1}", faixa.Album.Titulo.PadRight(40), faixa.Nome);
            }
        }
Beispiel #15
0
        private static void LinqToEntitiesRefinandoConsultas()
        {
            using (var contexto = new AluraTunesEntities())
            {
                GetFaixas(contexto, "Led Zeppelin", "");

                Console.WriteLine();

                GetFaixas(contexto, "Led Zeppelin", "Graffiti");
            }

            Console.ReadKey();
        }
Beispiel #16
0
        static void Main(string[] args)
        {
            using (var contexto = new AluraTunesEntities())
            {
                var query = from g in contexto.Generos
                            select g;

                foreach (var genero in query)
                {
                    Console.WriteLine("{0}\t{1}", genero.GeneroId, genero.Nome);
                }
                Console.WriteLine();
                var FaixaEGenero = from g in contexto.Generos
                                   join f in contexto.Faixas
                                   on g.GeneroId equals f.GeneroId
                                   select new { f, g };

                FaixaEGenero = FaixaEGenero.Take(10);

                // contexto.Database.Log = Console.WriteLine;

                foreach (var item in FaixaEGenero)
                {
                    Console.WriteLine("{0}\t{1}", item.f.Nome, item.g.Nome);
                }
                Console.ReadKey();
                Console.WriteLine();

                var busca = "Led";

                var artista = from a in contexto.Artistas
                              where a.Nome.Contains(busca)
                              select a;

                foreach (var item in artista)
                {
                    Console.WriteLine("{0}\t{1}", item.ArtistaId, item.Nome);
                }

                Console.WriteLine();

                var query2 = contexto.Artistas.Where(a => a.Nome.Contains(busca));

                foreach (var item in query2)
                {
                    Console.WriteLine("{0}\t{1}", item.ArtistaId, item.Nome);
                }

                Console.ReadKey();
            }
        }
Beispiel #17
0
        private static void GetFaixasSintaxeQuery(AluraTunesEntities contexto, string nomeArtista, string album)
        {
            var queryFiltroDinamico = from f
                                      in contexto.Faixas
                                      where (!string.IsNullOrEmpty(nomeArtista) ? f.Album.Artista.Nome.Contains(nomeArtista) : true) &&
                                      (!string.IsNullOrEmpty(album) ? f.Album.Titulo.Contains(album) : true)
                                      orderby f.Nome, f.Album.Titulo
            select f;

            foreach (var faixa in queryFiltroDinamico)
            {
                Console.WriteLine("{0}\t{1}", faixa.Album.Titulo.PadRight(40), faixa.Nome);
            }
        }
Beispiel #18
0
        private static void GetFaixas(AluraTunesEntities contexto, string buscaArtista, string buscaAlbum)
        {
            var query = from f in contexto.Faixas
                        where f.Album.Artista.Nome.Contains(buscaArtista)
                        select f;

            if (!string.IsNullOrEmpty(buscaAlbum))
            {
                query = query.Where(q => q.Album.Titulo.Contains(buscaAlbum));
            }

            foreach (var faixa in query)
            {
                Console.WriteLine("{0}\t{1}", faixa.Album.Titulo.PadRight(40), faixa.Nome);
            }
        }
Beispiel #19
0
        private static void LinqToEntitiesSintaxeDeMetodo()
        {
            using (var contexto = new AluraTunesEntities())
            {
                contexto.Database.Log = Console.WriteLine;

                var textoBusca = "Led";

                var query = contexto.Artistas.Where(a => a.Nome.Contains(textoBusca));

                foreach (var artista in query)
                {
                    Console.WriteLine("{0}\t{1}", artista.ArtistaId, artista.Nome);
                }
            }

            Console.ReadKey();
        }
Beispiel #20
0
        private static void GetFaixas(AluraTunesEntities contexto, string buscaArtista, string buscaAlbum)
        {
            var query = from f in contexto.Faixas
                        where f.Album.Artista.Nome.Contains(buscaArtista) &&
                        (!string.IsNullOrEmpty(buscaAlbum) ? f.Album.Titulo.Contains(buscaAlbum) : true)
                        orderby f.Album.Titulo, f.Nome
            select f;

            //if (!string.IsNullOrEmpty(buscaAlbum))
            //{
            //    query = query.Where(q => q.Album.Titulo.Contains(buscaAlbum));
            //}

            //query = query.OrderBy(q => q.Album.Titulo).ThenByDescending(q => q.Nome);

            foreach (var faixa in query)
            {
                Console.WriteLine("{0}\t{1}", faixa.Album.Titulo.PadRight(40), faixa.Nome);
            }
        }
Beispiel #21
0
        static void Main(string[] args)
        {
            using (var contexto = new AluraTunesEntities())
            {
                var query = from f in contexto.Faixas
                            where f.Album.Artista.Nome == "Led Zeppelin"
                            select f;

                //var quantidade = query.Count();

                //Console.WriteLine("Led Zeppelin tem {0} músicas no banco de dados.", quantidade);

                var quantidade = contexto.Faixas
                                 .Count(f => f.Album.Artista.Nome == "Led Zeppelin");

                Console.WriteLine("Led Zeppelin tem {0} faixas de música.", quantidade);
            }

            Console.ReadKey();
        }
Beispiel #22
0
        static void Main(string[] args)
        {
            using (var contexto = new AluraTunesEntities())
            {
                var query = from inf in contexto.ItemsNotaFiscal
                            where inf.Faixa.Album.Artista.Nome == "Led Zeppelin"
                            select new { totalDoItem = inf.Quantidade * inf.PrecoUnitario };

                //foreach (var inf in query)
                //{
                //    Console.WriteLine("{0}", inf.totalDoItem);
                //}

                var totalDoArtista = query.Sum(q => q.totalDoItem);

                Console.WriteLine("Total do artista: R$ {0}", totalDoArtista);

                Console.ReadKey();
            }
        }
Beispiel #23
0
        private static void GetFaixas(AluraTunesEntities contexto, string nomeArtista, string album)
        {
            var queryFiltroDinamico = from f in contexto.Faixas select f;

            if (!string.IsNullOrEmpty(nomeArtista))
            {
                queryFiltroDinamico = queryFiltroDinamico.Where(f => f.Album.Artista.Nome.Contains(nomeArtista));
            }

            if (!string.IsNullOrWhiteSpace(album))
            {
                queryFiltroDinamico = queryFiltroDinamico.Where(f => f.Album.Titulo.Contains(album));
            }

            queryFiltroDinamico = queryFiltroDinamico.OrderBy(o => o.Album.Titulo).ThenBy(o => o.Nome);

            foreach (var faixa in queryFiltroDinamico)
            {
                Console.WriteLine("{0}\t{1}", faixa.Album.Titulo.PadRight(40), faixa.Nome);
            }
        }
Beispiel #24
0
        private static void LinqToEntitiesWhere()
        {
            using (var contexto = new AluraTunesEntities())
            {
                var textoBusca = "Led";

                contexto.Database.Log = Console.WriteLine;

                var query = from artista in contexto.Artistas
                            where artista.Nome.Contains(textoBusca)
                            select artista;

                foreach (var artista in query)
                {
                    Console.WriteLine("{0}\t{1}", artista.ArtistaId, artista.Nome);
                }
            }


            Console.ReadKey();
        }
Beispiel #25
0
        static void Main(string[] args)
        {
            using (var contexto = new AluraTunesEntities())
            {
                var textoBusca = "Led";

                var query = from a in contexto.Artistas
                            join alb in contexto.Albums
                            on a.ArtistaId equals alb.ArtistaId
                            where a.Nome.Contains(textoBusca)
                            select new
                {
                    NomeArtista = a.Nome,
                    NomeAlbum   = alb.Titulo
                };

                foreach (var item in query)
                {
                    Console.WriteLine("{0}\t{1}", item.NomeArtista, item.NomeAlbum);
                }

                var query2 = from alb in contexto.Albums
                             where alb.Artista.Nome.Contains(textoBusca)
                             select new
                {
                    NomeArtista = alb.Artista.Nome,
                    NomeAlbum   = alb.Titulo
                };

                Console.WriteLine();
                foreach (var album in query2)
                {
                    Console.WriteLine("{0}\t{1}", album.NomeArtista, album.NomeAlbum);
                }

                Console.ReadKey();
            }
        }
Beispiel #26
0
        private static void FiltrandoRegistros()
        {
            var textoBusca = "Amor";

            using (var context = new AluraTunesEntities())
            {
                var albuns = context.Album.ToList();

                var query = from albun in context.Album
                            join faixa in context.Faixa
                            on albun.AlbumId equals faixa.AlbumId

                            /*Condição IN LINE
                             * Mas poderia estar abaixo
                             * query = query.orderby(f => f.nome)
                             *
                             */
                            where (!string.IsNullOrEmpty(textoBusca) ? faixa.Nome.Contains(textoBusca) : true)
                            orderby faixa.Nome descending
                            select new
                {
                    albun,
                    faixa
                };

                //query = query.OrderBy(f => f.faixa.Nome).ThenByDescending(f => f.faixa.TipoMidiaId);

                query = query.Take(5);


                context.Database.Log = Console.WriteLine;

                foreach (var item in query)
                {
                    Console.WriteLine("{0}\t{1}", item.faixa.Nome, item.albun.Titulo);
                }
            }
        }
Beispiel #27
0
        private static void GroupBy()
        {
            using (var context = new AluraTunesEntities())
            {
                var query = from inf in context.ItemNotaFiscal
                            where inf.Faixa.Album.Artista.Nome == "Led Zeppelin"
                            group inf by inf.Faixa.Album into agrupado
                            let vendasporalbum = agrupado.Sum(f => f.Quantidade * f.PrecoUnitario)
                                                 orderby vendasporalbum descending
                                                 select new
                {
                    Nome  = agrupado.Key.Titulo,
                    Total = vendasporalbum
                };

                foreach (var inf in query)
                {
                    Console.WriteLine("{0}\t{1}",
                                      inf.Nome.PadRight(40),
                                      inf.Total);
                }
            }
        }
Beispiel #28
0
        static void Main(string[] args)
        {
            using (var contexto = new AluraTunesEntities())
            {
                //Linq com sintaxe de método
                var query = contexto.Artistas.Where(a => a.Nome.Contains("Led"));

                foreach (var item in query)
                {
                    Console.WriteLine("{0}\t{1}", item.ArtistaId, item.Nome);
                }

                Console.WriteLine();
                //Linq com sintaxe de consulta
                var query2 = from a in contexto.Artistas
                             where a.Nome.Contains("Led")
                             select a;

                foreach (var item in query2)
                {
                    Console.WriteLine("{0}\t{1}", item.ArtistaId, item.Nome);
                }

                Console.WriteLine();

                var query3 = from g in contexto.Generos
                             where g.Nome == "Rock"
                             select g;
                foreach (var item in query3)
                {
                    Console.WriteLine("{0}\t{1}", item.Nome, item.GeneroId);
                }
            }

            Console.ReadKey();
        }
Beispiel #29
0
        private static void TotalizandoDeFormaBurra()
        {
            decimal total = 0;

            using (var context = new AluraTunesEntities())
            {
                var query = from inf in context.ItemNotaFiscal
                            where inf.Faixa.Album.Artista.Nome == "Led Zeppelin"
                            select inf;

                foreach (var inf in query)
                {
                    total += (inf.Quantidade * inf.PrecoUnitario);

                    Console.WriteLine("{0}\t{1}\t{2}",
                                      inf.Faixa.Album.Titulo.PadRight(40),
                                      inf.Quantidade,
                                      inf.PrecoUnitario);
                }
                Console.WriteLine("Total :" + total);

                //86,13
            }
        }
Beispiel #30
0
        static void Main(string[] args)
        {
            #region Linq To Entity
            //using (var contexto = new AluraTunesEntities())
            //{
            //    var query = from g in contexto.Generos
            //                select g;

            //    foreach (var genero in query)
            //    {
            //        Console.WriteLine("{0}\t{1}", genero.GeneroId, genero.Nome);
            //    }
            //    Console.WriteLine();

            //    var faixaEGenero = from g in contexto.Generos
            //                       join f in contexto.Faixas on g.GeneroId equals f.GeneroId
            //                       select new
            //                       {
            //                           f,
            //                           g
            //                       };

            //    faixaEGenero = faixaEGenero.Take(10);

            //    contexto.Database.Log = Console.WriteLine;

            //    foreach (var item in faixaEGenero)
            //    {
            //        Console.WriteLine("{0}\t{1}", item.f.Nome, item.g.Nome);
            //    }

            //}

            using (var contexto = new AluraTunesEntities())
            {
                var textoBusca = "Led";

                var query = from a in contexto.Artistas
                            join alb in contexto.Albums on a.ArtistaId equals alb.ArtistaId
                            where a.Nome.Contains(textoBusca)
                            select new
                {
                    NomeArtista = a.Nome,
                    NomeAlbum   = alb.Titulo
                };

                foreach (var item in query)
                {
                    Console.WriteLine("{0}\t{1}", item.NomeArtista, item.NomeAlbum);
                }
                Console.WriteLine();

                var query2 = contexto.Artistas.Where(a => a.Nome.Contains(textoBusca));
                foreach (var item in query2)
                {
                    Console.WriteLine("{0}\t{1}", item.ArtistaId, item.Nome);
                }
                Console.WriteLine();
            }

            #endregion


            #region Linq To XML
            //XElement root = XElement.Load(@"C:\Dev\Estudos\AluraTunes\AluraTunes\Data\AluraTunes.xml");
            //var queryXML = from g in root.Element("Generos").Elements("Genero")
            //               select g;

            //foreach (var genero in queryXML)
            //{
            //    Console.WriteLine("{0}\t{1}", genero.Element("GeneroId").Value, genero.Element("Nome").Value);
            //}
            //Console.WriteLine();

            //var query = from g in root.Element("Generos").Elements("Genero")
            //            join m in root.Element("Musicas").Elements("Musica")
            //                on g.Element("GeneroId").Value equals m.Element("GeneroId").Value
            //            select new
            //            {
            //                Musica = m.Element("Nome").Value,
            //                Genero = g.Element("Nome").Value
            //            };

            //foreach (var musicaEGenero in query)
            //{
            //    Console.WriteLine("{0}\t{1}", musicaEGenero.Musica, musicaEGenero.Genero);
            //}
            #endregion
            #region Linq To Object

            //IList<Genero> generos = new List<Genero>
            //{
            //    new Genero{ Id = 1, Nome = "Rock"},
            //    new Genero{ Id = 2, Nome = "Reggae"},
            //    new Genero{ Id = 3, Nome = "Rock Progressivo"},
            //    new Genero{ Id = 4, Nome = "Punk Rock"},
            //    new Genero{ Id = 5, Nome = "Clássica"},
            //};

            //foreach (var genero in generos)
            //{
            //    if (genero.Nome.Contains("Rock"))
            //    {
            //        Console.WriteLine("{0}\t{1}", genero.Id, genero.Nome);
            //    }
            //}
            //Console.WriteLine();
            //var query = from g in generos
            //            where g.Nome.Contains("Rock")
            //            select g;

            //foreach (var genero in query)
            //{
            //    Console.WriteLine("{0}\t{1}", genero.Id, genero.Nome);
            //}
            //Console.WriteLine();
            //IList<Musica> musicas = new List<Musica>
            //{
            //    new Musica { Id = 1, Nome= "Sweet Chield O'Mine", GeneroId = 1 },
            //    new Musica { Id = 2, Nome = "I Shot The Sheriff", GeneroId = 2},
            //    new Musica { Id = 3, Nome = "Danúbio Azul", GeneroId = 5},
            //};

            //var musicaQuery = from m in musicas
            //                  join g in generos on m.GeneroId equals g.Id
            //                  select new {
            //                      m,
            //                      g
            //                  };

            //foreach (var musica in musicaQuery)
            //{
            //    Console.WriteLine("{0}\t{1}\t{2}", musica.m.Id, musica.m.Nome, musica.g.Nome);
            //}
            #endregion
        }