Я новичок в ASP.NET и LINQ. Я хочу отобразить название книги, имя издателя и имя автора на странице указателя. Одна книга может иметь более одного автора.
Мой запрос на отображение результата выглядит следующим образом
var query = BookAuthors.Join(Authors,
bookAuthor => bookAuthor.AuthorId,
author => author.Id,
(bookAuthor, author) => new { bookAuthor = bookAuthor, AuthorName = author.Name })
.Join(Books,
ba => ba.bookAuthor.BookId,
book => book.Id,
(ba, book) => new { book = book, AuthorName = ba.AuthorName })
.Join(Publishers,
book => book.book.PublisherId,
publisher => publisher.Id,
(book, publisher) => new { BookId = book.book.Id , BookName = book.book.Name, AuthorName = book.AuthorName, PublisherName = publisher.Name});
Затем я создаю модель представления для отображения результата, код представления модели выглядит так
foreach (var obj in query)
{
viewModel.Add(new TestViewModel
{
BookId = obj.BookId,
BookName = obj.BookName,
AuthorName = obj.AuthorName,
PublisherName = obj.PublisherName
});
}
return View(viewModel);
используя метод Join (), он работает как Inner Join в SQL, результат запроса будет таким:
| BookName | PublisherName | Author |
| Book A | Publisher B | Author A |
| Book B | Publisher A | Author A |
| Book B | Publisher A | Author B |
| Book C | Publisher B | Author C |
Но я ожидаю, что результат запроса будет таким
| BookName | PublisherName | Author |
| Book A | Publisher B | Author A |
| Book B | Publisher A | Author A, Author B |
| Book C | Publisher B | Author C |
Как присоединить значение автора к той же строке, если оно имеет одинаковое значение для идентификатора книги? Есть ли какой-нибудь метод LINQ для его объединения?