繁体   English   中英

使用Entity Framework MVC5连接多个表和单个输出

[英]Join multiple tables and single output using Entity Framework mvc5

我是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

我需要基于Table_Application ID的linq列表中的linq输出结果数据

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();

看一下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()东西。

 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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM