[英]How to combine two model list to one model
请参见下面的代码:
public class NewsFilterModel
{
public CtArticleDetail ArticleDetail { get; set; }
public PcPage Page { get; set; }
}
public IEnumerable<NewsFilterModel> GetNewsFilterModelByTagNames(string tagNames, int status)
{
var resultArticle = db.CtArticleDetail.Where(m => m.tagNames == tagNames);
var resultPage = db.PcPage.Where(m => m.tagNames == tagNames);
}
任何人都可以请教什么是将两个模型组合为一个模型(NewsFilterModel)的最佳方法?
我想要实现的是:
NewsFilterModelList
1.Article1
2.Page1
3.Article2
4.Page2
5.Article3
6.Page3
我已经像下面这样结束了:
foreach (var item in pageResult)
{
resultList.Add(new NewsFilterModel { ArticleDetail = null, Page = item, Date = item.UpdatedOn.ToDateTime() });
}
foreach (var item in tempArticleList)
{
resultList.Add(new NewsFilterModel { ArticleDetail = item, Page = null, Date = item.LiveDate.ToDateTime() });
}
return resultList.AsEnumerable();
任何人都有更好的主意,请指教。
您可以使用联合来合并结果集
var query1 = db.CtArticleDetail
.Where(a => a.tagNames.Equals(tagNames))
.Select(a => new NewsFilterModel() { ArticleDetail = a, Page = null });
var query2 = db.PcPage
.Where(a => a.tagNames.Equals(tagNames))
.Select(a => new NewsFilterModel() { ArticleDetail = null, Page = a });
var query3 = query1.Union(query2)
//.OrderBy(a => a.Date); -- Order here
;
显然, CtArticleDetail
和PcPage
没有任何关系,因此您需要更改模型。
public class NewsFilterModel
{
public IEnmerable<CtArticleDetail> ArticleDetails { get; set; }
public IEnmerable<PcPage> Pages { get; set; }
}
和
public NewsFilterModel GetNewsFilterModelByTagNames(string tagNames, int status)
{
var resultArticle = db.CtArticleDetail.Where(m => m.tagNames == tagNames);
var resultPage = db.PcPage.Where(m => m.tagNames == tagNames);
var newsFilterModel = new NewFilterModel { ArticleDetails = resultArticle, Pages = resultPage };
return newsFilterModel;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.