Я пытаюсь объединить две разные модели в одну модель, чтобы я мог фильтровать результаты как один список.Как наилучшим образом комбинировать результаты модели
Модель:
public partial class OverviewItems
{
// Videos and Images combined for overview
[NotMapped]
public List<dynamic> Item { get; set; }
}
Мой контроллер:
public ActionResult LoadItems(int skip = 0, int take = 4)
{
OverviewItems items = new OverviewItems();
// get al the videos an images, order them by creaton date. Take onyly the latest videos/images combined.
var images = db.Images.Where(i => i != null && i.Items != null && i.Items.Count() > 0).OrderByDescending(i => i.CreatedOn).Take(take).Skip(skip) as IEnumerable<object>;
var videos = db.Videos.Where(v => v != null && !string.IsNullOrEmpty(v.Watch_id)).OrderByDescending(v => v.CreatedOn).Take(take).Skip(skip) as IEnumerable<object>;
items.Item.Add(images);
items.Item.Add(videos);
// ViewBag.Items = images.Concat(videos);
return PartialView("OverviewItems", items);
}
видео и изображения являются Entity Framework классы с пунктами.
public partial class Videos : OverviewItems
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[StringLength(250, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)]
public string Title { get; set; }
То же самое для модели изображений. но с течением времени с разными свойствами.
Я также попробовал ViewBag, но что dosn't работает либо потому, что видео и изображения имеют другой тип, даже если я отбрасываю их в динамический.
Какую часть я пропустил? есть ли простое решение для объединения двух наборов, чтобы я мог фильтровать/брать/пропускать элементы в одно частичное?
Создать модель представления с 2 свойствами из ваших коллекций –
Как? Я хотел бы объединить результаты, не создавая два разных набора элементов. – RunnicFusion
Я бы также сделал db.Videos.Where (v => v! = Null &&! String.IsNullOrEmpty (v.Watch_id)). OrderByDescending (v => v.CreatedOn) .Take (take) .Skip (skip) .ToList(); 'также. Если вы используете дженерики, а не динамику, вам будет легче. –