[英]Join tables with linq
I have 4 tables: 我有4张桌子:
I want to execute query with join and get 2 outputs: 我想用join和get 2输出执行查询:
both on the same view. 两者都在同一个观点上。
In the Controller I have this code: 在Controller中我有这个代码:
public ActionResult Index()
{
var query1 = from to in db.Topics
join rel in db.RelyTopics on to.IdTopic equals rel.Id
select new TopicAndDetails
{
Topic = to,
RelyTopic = rel,
};
var query2 = from tag in db.TagTopics
join na in db.TagNames on tag.IdTag equals na.IdName
select new TopicAndDetails
{
TagTopic = tag,
NameTag = na,
};
var relytopics = new TopicAndDetails(query1, query2) ; //??????
return View(relytopics.ToList());
}
In the Model have this code: 在Model中有这个代码:
public partial class TopicAndDetails
{
public Topic Topic { get; set; }
public TagName NameTag { get; set; }
public TagTopic TagTopic { get; set; }
public RelyTopic RelyTopic { get; set; }
}
Create your navigation properties first: https://msdn.microsoft.com/en-us/library/jj713564(v=vs.113).aspx , then you can do this: 首先创建导航属性: https : //msdn.microsoft.com/en-us/library/jj713564(v = vs133).aspx ,然后你可以这样做:
public ActionResult Index()
{
return db.Topics.Select(t=>new TopicAndDetails {Topic=t})
.Concat(db.TagTopics.Select(tt=>new TopicAndDetails {TagTopic=tt));
}
public partial class TopicAndDetails
{
public Topic Topic { get; set; }
public TagTopic TagTopic { get; set; }
}
Your ViewModel would then be IQueryable<TopicAndDetails>
or IEnumerable<TopicAndDetails>
您的ViewModel将是IQueryable<TopicAndDetails>
或IEnumerable<TopicAndDetails>
Or this would make more sense probably: 或者这可能更有意义:
public ActionResult Index()
{
return new TopicAndDetails {
Topics = db.Topics.ToList(),
TagTopics = db.TagTopics.ToList()
};
}
public partial class TopicAndDetails
{
public List<Topic> Topics { get; set; }
public List<TagTopic> TagTopics { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.