Выбор альтернативных элементов из Entity для различных значений свойств внутренней сущности и повторение их - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть 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;
...