The query I'm trying to translate is:
SELECT
MIN(BookCopies.id) as id, Books.title, Authors.name, Publishers.name
FROM
dbo.BookCopies
INNER JOIN
Books ON BookCopies.bookId = Books.id
INNER JOIN
Authors ON Books.authorId = Authors.id
INNER JOIN
Publishers ON BookCopies.publisherId = Publishers.id
WHERE
BookCopies.sold = 0
GROUP BY
Books.title, Authors.name, Publishers.name;
I'm trying to solve this problem for 3 hours and I can't... :/
The Linq code:
var query = (from bc in db.BookCopies
join b in db.Books on bc.bookId equals b.id
join a in db.Authors on b.authorId equals a.id
join p in db.Publishers on bc.publisherId equals p.id
where (bc.sold == false && bc.price != null && bc.price != 0)
group bc by new {b.title, author = a.name, publisher = p.name} into gr
select new {gr.Key.title, gr.Key.author, gr.Key.publisher});
But it's not correct.
var query = (from bc in db.BookCopies join b in db.Books on bc.bookId equals b.id join a in db.Authors on b.authorId equals a.id join p in db.Publishers on bc.publisherId equals p.id where (bc.sold == false && bc.price != null && bc.price != 0) group bc by new {b.title, a.name} into gr select new {bc.id, gr.Key.title, gr.Key.name}).Min();