C# 使用实体框架mvc5连接多个表和单个输出
我对linq查询非常陌生,所以我需要使用实体框架mvc5连接多个表和单个输出 下面是我的3个表结构,表_应用程序是一个主表 1表2应用程序C# 使用实体框架mvc5连接多个表和单个输出,c#,sql,asp.net,linq,C#,Sql,Asp.net,Linq,我对linq查询非常陌生,所以我需要使用实体框架mvc5连接多个表和单个输出 下面是我的3个表结构,表_应用程序是一个主表 1表2应用程序 Id ApplicationName ServiceId ProductID 1 Myapp 1 1 2表2服务 ServiceId SName 1 S1 3表4产品 ProductID PName 1
Id ApplicationName ServiceId ProductID
1 Myapp 1 1
2表2服务
ServiceId SName
1 S1
3表4产品
ProductID PName
1 P1
var IA = db.Applications
.Where(x => x.ID == Id)
.Select(IAview => new IAViewModel
{
ApplicationName = IAview.ApplicationName
}).ToList();
我需要linq列表中基于表\应用程序ID的linq out结果数据
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_服务和table_产品
ProductID PName
1 P1
var IA = db.Applications
.Where(x => x.ID == Id)
.Select(IAview => new IAViewModel
{
ApplicationName = IAview.ApplicationName
}).ToList();
看一看LINQ查询语法——它类似于SQL,因此如果您来自这种背景,就更容易理解 有一个教程将为您提供一个基本的起点,然后您可以根据需要添加连接等 请注意,以下内容未经测试,将为您提供一个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,改为使用.FirstOrDefaultHi@mahzar,你试过什么吗?你被卡在哪里了?我的桌子结构其他一些字段我应该发布我试过的吗?我用简单的语言解释@Jeroenh理想情况下,您发布了您尝试过的C代码,并解释了您的位置Stuck我已经编辑了我的问题,请检查并确认@Jeroenh可能的副本我会检查并得到你的答案@diliHow名称将选择t1.ApplicationName、t2.SName、t3.PName@DilipFirstOrDefault将选择所有列,或者您可以使用Linq select在mazharhow处过滤列以传递会话值@加雷斯Lewis@mazhar我已更新我的答案,以包括我要分配此视图模型的where子句请检查我的问题您的答案给出正确的列表,但要这样分配。选择IAView=>new IAViewModel@加雷斯Lewis@mazhar我已经更新了答案,以显示如何从LINQ查询中选择新的IAViewModel