Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将两个模型列表合并为一个模型_C#_Asp.net Mvc 3_Linq_Entity Framework_Lambda - Fatal编程技术网

C# 如何将两个模型列表合并为一个模型

C# 如何将两个模型列表合并为一个模型,c#,asp.net-mvc-3,linq,entity-framework,lambda,C#,Asp.net Mvc 3,Linq,Entity Framework,Lambda,请参阅下面的代码: public class NewsFilterModel { public CtArticleDetail ArticleDetail { get; set; } public PcPage Page { get; set; } } public IEnumerable<NewsFilterModel> GetNewsFilterModelByTagNames(string tagNames, int status) { var re

请参阅下面的代码:

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);
}
我以如下方式结束了这一切:

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

任何人都有更好的想法,请提供建议。

很明显,您的
CtArticleDetail
PcPage
没有关联,因此您需要更改您的型号

public class NewsFilterModel
{
    public IEnmerable<CtArticleDetail> ArticleDetails { get; set; }

    public IEnmerable<PcPage> Pages { get; set; }
}

可以使用Union组合结果集

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
    ;

您如何知道哪个
ctarticledeail
与哪个
PcPage
相匹配?PcPage和ctarticledeail之间没有关系。所以我想我不需要知道。那么,给定一个
ccarticledeail
PcPage
的可枚举项,这些可枚举项是否应该有1:1的比例,并为每个集合创建一个模型?当集合的项目数不相等时会发生什么情况?我不确定您在这里想要实现什么。我正在尝试生成一个包含ctArticle和pcpage的列表页面。谢谢。这太完美了。但我需要返回IEnumerable,因为该模型列表页面有分页。该列表需要根据实时日期混合articledetail和pcpage。
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;
}
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
    ;