У меня есть Product
сущность, которая содержит Category
сущность. Теперь я пытаюсь достичь списка продуктов, в котором список содержит продукты в том порядке, в котором продукт из категории должен появиться после того, как в списке появится любой другой продукт. Например: если есть три категории (cat1, cat2 и cat3), и каждая из них содержит от 2 до 3 продуктов, а pageSize
равно 5, тогда список должен выглядеть следующим образом:
- [Product1 от cat1],
- [Product2 от cat2],
- [Product3 от cat3],
- [Product4 от cat1],
- [Product5 от cat2 ]
Ниже приведен мой код. Но теперь он показывает правильные результаты.
var randomProducts = new List<Product>();
var categories = Products.Select(c => c.Category.ID).Distinct().ToList();
int y = categories.First();
int index = 0;
for (int i = 0; i < pageSize; i++)
{
if (index == categories.Count)
break;
var catid = categories[index];
var _products = Products.Skip(skipCount).ToList().Except(randomProducts).Where(c => c.Category.ID == catid);
if(_products != null && _products.Count() > 0)
randomProducts.Add(_products.First());
else
{
index++;
}
if (randomProducts.Count == Products.Count())
break;
}
return randomProducts;