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)); } }
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}"); } } }