예제 #1
0
        private void JoiningTableData_Load(object sender, EventArgs e)
        {
            BooksExamples.BooksEntities dbcontext = new BooksExamples.BooksEntities();

            var authorAndISBNs =
                from author in dbcontext.Authors
                from book in author.Titles
                orderby author.LastName, author.FirstName
                select new {author.FirstName, author.LastName, book.ISBN};

            outputTextBox.AppendText("Authors and ISBNs");

            foreach (var record in authorAndISBNs)
            {
                outputTextBox.AppendText(
                    String.Format("\r\n\t{0,-10} {1,-10} {2,-10}", record.FirstName, record.LastName,record.ISBN));
            }

            var authorsAndTitles =
                from book in dbcontext.Titles
                from author in dbcontext.Authors
                orderby author.LastName, author.FirstName, book.Title1
                select new {author.FirstName, author.LastName, book.Title1};

            outputTextBox.AppendText("\r\n\r\nAuthors and titles:");

            foreach (var record in authorsAndTitles)
            {
                outputTextBox.AppendText(
                     String.Format("\r\n\t{0,-10} {1,-10} {2,-10}", record.FirstName, record.LastName,record.Title1));

            }
        }
예제 #2
0
        private void JoiningTableData_Load(object sender, EventArgs e)
        {
            // Entity Framework DbContext
            var dbcontext = new BooksExamples.BooksEntities();

            // get authors and ISBNs of each book they co-authored
            var authorsAndISBNs =
                from author in dbcontext.Authors
                from title in author.Titles
                orderby author.LastName, author.FirstName
                select new { author.FirstName, author.LastName, title.ISBN };

            var authorsAndISBNsMethodSyntax = dbcontext
                                              .Authors
                                              .SelectMany(a => a.Titles,
                                                          (author, title) => new { author, title = title })
                                              .OrderBy(t => t.author.LastName)
                                              .ThenBy(t => t.author.FirstName)
                                              .Select(t => new { t.author.FirstName, t.author.LastName, t.title.ISBN });

            outputTextBox.AppendText("Authors and ISBNs:");

            // display authors and ISBNs in tabular format
            foreach (var element in authorsAndISBNsMethodSyntax)
            {
                outputTextBox.AppendText($"\r\n\t{element.FirstName,-10} " +
                                         $"{element.LastName,-10} {element.ISBN,-10}");
            }

            // get authors and titles of each book they co-authored
            var authorsAndTitles =
                from book in dbcontext.Titles
                from author in book.Authors
                orderby author.LastName, author.FirstName, book.Title1
                select new { author.FirstName, author.LastName, book.Title1 };

            var authorsAndTitlesMethodSyntax = dbcontext
                                               .Titles
                                               .SelectMany(book => book.Authors,
                                                           (book, author) => new { book, author })
                                               .OrderBy(t => t.author.LastName)
                                               .ThenBy(t => t.author.FirstName)
                                               .ThenBy(t => t.book.Title1)
                                               .Select(t => new { t.author.FirstName, t.author.LastName, t.book.Title1 });

            outputTextBox.AppendText("\r\n\r\nAuthors and titles:");

            // display authors and titles in tabular format
            foreach (var element in authorsAndTitles)
            {
                outputTextBox.AppendText($"\r\n\t{element.FirstName,-10} " +
                                         $"{element.LastName,-10} {element.Title1}");
            }

            // get authors and titles of each book
            // they co-authored; group by author
            var titlesByAuthor =
                from author in dbcontext.Authors
                orderby author.LastName, author.FirstName
                select new { Name   = author.FirstName + " " + author.LastName,
                             Titles =
                                 from book in author.Titles
                                 orderby book.Title1
                                 select book.Title1 };

            outputTextBox.AppendText("\r\n\r\nTitles grouped by author:");

            // display titles written by each author, grouped by author
            foreach (var author in titlesByAuthor)
            {
                // display author's name
                outputTextBox.AppendText($"\r\n\t{author.Name}:");

                // display titles written by that author
                foreach (var title in author.Titles)
                {
                    outputTextBox.AppendText($"\r\n\t\t{title}");
                }
            }
        }