あなたのORMは、同じタイプに両方のテーブルをマッピングしている、あなたがこれを行うことができるはずと仮定:
var userPost = (Category == "News" ? db.News : db.Sport)
.Include(x => x.Popular)
.Include(x => x.Popular.Category)
.Where(x => x.User.Id == userId)
.OrderByDescending(x => x.CreatedAt)
.ProjectTo<PostViewModel>(_mapper.ConfigurationProvider)
.ToPagedList(pageIndex, pageSize);
または、おそらくもう少し読み:
var table = (Category == "News" ? db.News : db.Sport);
var userPost = table
.Include(x => x.Popular)
.Include(x => x.Popular.Category)
.Where(x => x.User.Id == userId)
.OrderByDescending(x => x.CreatedAt)
.ProjectTo<PostViewModel>(_mapper.ConfigurationProvider)
.ToPagedList(pageIndex, pageSize);
あなたが多重化したい2つの以上のテーブルを持っている場合は、別の方法に出て選択ロジックを分割したい場合があります:私は、三項演算子と考えていただけで何
internal IQueryable<ROWTYPE> SelectTable(string category)
{
switch (category)
{
case "News": return db.News;
case "Sport": return db.Sport;
case "Arts": return db.Arts;
default: throw new ArgumentException("Unsupported category: " + category);
}
}
var table = SelectTable(Category);
var userPost = table
.Include(x => x.Popular)
.Include(x => x.Popular.Category)
.Where(x => x.User.Id == userId)
.OrderByDescending(x => x.CreatedAt)
.ProjectTo<PostViewModel>(_mapper.ConfigurationProvider)
.ToPagedList(pageIndex, pageSize);
。あなたは私にそれを打つ:p –
あなたの答えをありがとう。 3つのカテゴリでも可能ですか? それをテストします:) – Aaron
@Aaronはい、もちろんです。あなたが必要とする数だけ。 – JLRishe