Как мне преобразовать этот sql в запрос linq? - PullRequest
1 голос
/ 05 ноября 2011

Как мне преобразовать следующий запрос в запрос linq to sql?

    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

это то, что у меня было, но выдает ошибку:

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                                                       
                          };

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Начните с очистки SQL.Не смешивайте объединения и неявные объединения в запросе, используйте явные объединения для обоих:

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

Теперь я думаю, что это переводит:

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                                                       
};
1 голос
/ 05 ноября 2011

Попробуйте:

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                                                       
                          };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...