Синтаксис LINQ для SQL внутренних соединений - PullRequest
1 голос
/ 21 апреля 2020

Я полный новичок в linq.

У меня есть оператор T- SQL, которого я не знаю, пишите в Linq.

Структура таблиц базы данных выглядит следующим образом : Структура БД

Код SQL выглядит следующим образом:

SELECT 
    e.PersonId, e.PhoneNoId, e.PhoneId, s.StateId, e.AssignDate, e.DiscardDate, e.Note
FROM
    dbo.Evidence AS e 
INNER JOIN
    dbo.Phone AS p ON e.PhoneId = p.PhoneId 
INNER JOIN
    dbo.[State] AS s ON p.StateId = s.StateId

Я хотел бы знать, как написать этот код в linq с лямбда-выражением.

Спасибо за помощь.

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете написать T-SQL запрос в LINQ, используя

  • либо синтаксис выражения запроса:

    // Declare query.
    var query =
        from e in db.Evidence
        join p in db.Phone on e.PhoneId equals p.PhoneId
        join s in db.State on p.StateId equals s.StateId
        select new {e.PersonId, e.PhoneNoId, e.PhoneId, s.StateId, e.AssignDate, e.DiscardDate, e.Note};
    // Execute query.
    var result = query.ToList();
    
  • или метод синтаксис запроса на основе:

    // Declare and execute query.
    var result =
        db.Evidence
           .Join(db.Phone, e => e.PhoneId, p => p.PhoneId, (e, p) => new {e, p})
           .Join(db.State, t => t.p.StateId, s => s.StateId, (t, s) =>
              new {t.e.PersonId, t.e.PhoneNoId, t.e.PhoneId, s.StateId, t.e.AssignDate, t.e.DiscardDate, t.e.Note});
           .ToList(); // Method "ToList()" executes query.
    

В этом примере переменная db имеет тип DbContext (я предполагаю, что вы собираетесь использовать EntityFramework).

Подробности см. В следующих ссылках:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...