У меня есть следующий список:
public class Products
{
public string SKU;
public int WarehouseID;
}
List<Products> products = new List<Products>();
который после заполнения списка я получаю следующие данные:
ProductCode|WarehouseID
SKU001|2
SKU001|3
SKU002|3
SKU003|3
SKU004|1
SKU004|5
У меня есть несколько SKU, так как товар может быть поставлен из более чем одного склада, находящегося на складе. В случае SKU001 на складе ID 2 больше запасов, чем на складе ID 3.
Мне нужно выбрать элементы из наименьшего количества мест склада. То, что я пытаюсь закончить, это что-то вроде
SKU001|3
SKU002|3
SKU003|3
SKU004|1
Это ограничивает выбор продукта только двумя местоположениями, так как SKU001, SKU002 и SKU003 могут быть получены со склада ID 3. Идеальный выбор из местоположения с наибольшим количеством акций, но ограничение количества мест является более важным.
Я использую Linq, чтобы попытаться достичь этого, пытаясь зациклировать каждый элемент списка, но я боюсь, поскольку Linq не является для меня сильным моментом. Я попытался сначала получить наивысший счет повторного идентификатора хранилища, используя
products.GroupBy(i => i).OrderByDescending(grp => grp.Count()).Select(grp => grp.Key).FirstOrDefault();
но я теряюсь на остальных элементах. Любые идеи о том, как я мог бы это сделать?