Соедините несколько таблиц и один выход, используя Entity Framework mvc5 - PullRequest
0 голосов
/ 24 августа 2018

Я очень новичок в запросе linq, поэтому мне нужно объединить несколько таблиц и один вывод, используя Entity Framework mvc5

Ниже приведены мои 3 структуры таблиц, а Table_Application - основная таблица

1) Table_Application

Id   ApplicationName    ServiceId     ProductID

1         Myapp           1               1

2) Table_Service

ServiceId     SName
  1             S1

3) Таблица_Продукт

ProductID     PName
  1             P1

Мне нужны данные результатов linq в базе списка linq с идентификатором Table_Application

ApplicationName   SName   PName
 Myapp             S1      P1

мой sql-запрос вроде того

select t1.ApplicationName,t2.SName,t3.PName from Table_Application t1,Table_Service t2,Table_Product t3 where t1.ServiceId =t2.ServiceId  and t1.ProductID=t3.ProductID and t1.Id="mysessionid"

Я пытался приехать за одной таблицей, но не смог объединить Table_Service и Table_Product

  var IA = db.Applications
      .Where(x => x.ID == Id)
      .Select(IAview => new IAViewModel 
      {
          ApplicationName = IAview.ApplicationName


      }).ToList();

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Посмотрите на синтаксис запроса LINQ - он похож на SQL, поэтому его легче понять, если вы исходите из такого рода фона.

Существует учебник по http://www.tutorialsteacher.com/linq/linq-query-syntax, которыйдаст вам базовую отправную точку, затем вы можете просто добавить соединения и т. д. по мере необходимости.

Обратите внимание, что следующее не проверено и даст вам список объектов IAViewModel, но я думаю, что вы хотели бы что-то похожее наследующее:

var a = (from app in db.Applications
join service in db.Services on app.ServiceId equals service.ServiceId
join product in sb.Products on app.ProductId equals product.ProductId
where app.Id == session_id
select new IAViewModel
{
    ApplicationName = app.ApplicationName,
    ServiceName = service.SName,
    ProductName = product.PName
}).ToList();

Если вам нужен только один результат, вы можете пропустить .ToList() и вместо этого использовать что-то вроде .FirstOrDefault()

0 голосов
/ 24 августа 2018
 var T = db.Table_Application.Join(
                    db.Table_Service,
                    TA=> TA.ServiceId,
                    TS => TA.ServiceId,
                    (TA,TS ) => new { TA, TS }
                    ).Join(
                    db.Table_Product,
                    TA2=> TA2.TA.ProductID,
                    TP => TP.ProductID,
                    (TA2, TP) => new { TA2, TP }
                    ).Where(c => c.TA.Id == "mysessionid").FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...