Я создаю библиотечную систему ASP.NET C#. Снимите снимок экрана (MSSQL) DB-design: LINQ query join only last value
Чтобы отобразить книги, я использую таблицу Аренда. Но есть моя проблема:
- Я оставил присоединиться к таблице книги с таблицей Rentals (потому что и книги, которые еще не сданы в аренду один раз, нужно будет отображаться (см книгу с идентификатором 3)
- Когда я только левый присоединиться, я вижу, что мои книги Offcourse несколько раз в моих книгах-обзоре ...
- SO: Я нужен запрос LINQ, который соединяет книги с Rentals, но если книги уже были арендовал несколько раз, он должен только присоединиться с последнего значения в таблице этого book_id
- Посмотрите на изображение ниже: запрос должен выбрать только зеленые выбранные значения ...
- (дополнительная информация: если кто-то взять книгу, то Возвращаемое значение = 0, если он возвращает книгу, она становится 1)
запрос у меня сейчас:
var query = (from b in db.Books
join a in db.Authors on b.author_id equals a.author_id
join c in db.Categories on b.category_id equals c.category_id
join r in db.Rentals on b.book_id equals r.book_id into lf
from r in lf.DefaultIfEmpty()
select new BookDetails(
b.book_id,
b.title,
b.ISBN,
b.description,
b.author_id,
a.firstName,
a.lastName,
b.category_id,
r.returned == null ? 1 : r.returned)
).ToList();
Но, как я уже сказал, это показывает мне арендованные книги несколько раз ... Я думал о чем-то с свойством «MAX»? (но это работает с linq?)
Благодарим за помощь! Как я могу получить «a» и «r» в выбранных новых BookDetails? Они больше не существуют ... – francisMi
О, вы правы, вам придется добавить их в совокупность. Я отредактирую свой ответ. –