Reputation: 79
How do I convert the following query into linq to sql query?
select
invoice.id, web_users.id, web_users.first_name, web_users.last_name,web_users.email_address
from attendees,web_users
join invoice where attendees.invoice_id=invoice.id and invoice.seminar_id=6 and attendees.web_user_id=web_users.id
this is what I had but it is throwing an error:
from att in context.Attendees
from webUsers in context.WebUsers
join invoice in context.Invoice
on att.InvoiceID equals invoice.ID
where invoice.SeminarID == seminarId &&
webUsers.ID == att.WebUserID
select new
{
webUsers.FirstName,
att.InvoiceID
};
Thanks in advance.
Upvotes: 1
Views: 226
Reputation: 700740
Start by cleaning up the SQL. Don't mix joins and implicit joins in the query, use explicit joins for both:
select invoice.id, web_users.id, web_users.first_name, web_users.last_name,web_users.email_address
from attendees
inner join web_users on web_users.id = attendees.web_user_id
inner join invoice on invoice.id = attendees.invoice_id
where invoice.seminar_id = 6
Now I think that it translates:
from att in context.Attendees
join webUsers in context.WebUsers on webUsers.ID equals att.WebUserID
join invoice in context.Invoice on att.InvoiceID equals invoice.ID
where invoice.SeminarID == seminarId
select new {
webUsers.FirstName,
att.InvoiceID
};
Upvotes: 1
Reputation: 6740
Try:
from att in context.Attendees
join webUsers in context.WebUsers
on att.web_user_id equals webUsers.id
join invoice in context.Invoice
on att.InvoiceID equals invoice.ID
where invoice.SeminarID == seminarId
select new
{
webUsers.FirstName,
att.InvoiceID
};
Upvotes: 1