c# LINQ Запросы Лямбда выражения База данных
var debtors = (from users in context.Users
join tickets in context.Ticket on users.Id equals tickets.UserId
join book in context.Books on tickets.BookId equals book.Id
select users).ToList();
Как данный запрос переделать в лямбда выражение?
Ответы (1 шт):
Автор решения: Alexander Petrov
→ Ссылка
В вашем конкретном случае лучше оставить код как есть. Потому что два джойна в синтаксисе запросов выглядят просто и лаконично, а в синтаксисе методов код получается громоздким.
Тут приходится вручную прокидывать данные из первого джойна во второй с помощью анонимного типа.
var debtors = context.Users
.Join(
context.Tickets,
user => user.Id,
ticket => ticket.UserId,
(user, ticket) => new
{
user,
ticket
})
.Join(
context.Books,
temp => temp.ticket.BookId,
book => book.Id,
(temp, book) => temp.user)
;
Как известно, компилятор переписывает query syntax в method syntax на этапе компиляции кода. Существуют дополнения к Visual Studio, которые позволяют посмотреть итоговый результат. Поискать их можно на Marketplace.
Также весьма популярная утилита LinqPad предоставляет такую возможность.