Я вижу проблему, это почти как если бы вы хотели еще одно объединение, но без множественности добавления еще одного объединения. Вы можете достичь этого, например, с помощью выбора элемента в новом экземпляре книги (имейте в виду, что на самом деле это может не сработать, поскольку я раньше не пробовал этого с объединением book_authors ...):
BOOK_Authors = dataContext.Authors.Where(a => book_authors.Contains(a.Author))
Однако из-за предопределенной схемы, которую LINQ настроил для вас, было бы намного проще использовать эту иерархию и написать:
var results = dataContext.Books;
foreach(var book in results) {
foreach(var authorLink in book.BookAuthors) {
// the author is here in:
// authorLink.Authors.Name
}
}
// This is the same list for the first book only
var allBookAuthors = results.First().BookAuthors.Select(a => a.Author);
Надеюсь, это поможет, Том
EDIT
После игры с демонстрационным проектом я изменил BookAuthors на открытый класс, а затем добавил ссылку на BookAuthors Table в BookCatalog следующим образом:
public Table<BookAuthor> BookAuthors;
Затем я удалил весь код категории, поскольку он не компилировался (возможно, мой пример кода новее? Также категория связана с помощью book.Category
) и использовал BOOK_Authors = book_authors.Select(a => a.Author)
, и он вернул всех соответствующих авторов. Из-за природы таблицы соединений эту работу нелегко выполнить стандартным способом from
. Вероятно, есть способ использовать группирование и некоторые хитрости внешнего соединения, но я не считаю необходимым применять это, когда у используемых сущностей соответствующие соединения объединяются автоматически через их схему.