0

以下のコードを参照してください。

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 である 1 つのモデルに 2 つのモデルを結合する最善の方法についてアドバイスをいただけますか?

私が達成しようとしていることは次のとおりです。

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

どなたか良いアイデアをお持ちでしたら、アドバイスをお願いします。

4

2 に答える 2

1

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
    ;
于 2012-11-07T18:39:31.987 に答える
0

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;
}
于 2012-11-07T15:48:09.307 に答える