[英]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.