У меня есть коллекция продуктов внутри коллекции области внутри designset, которая находится внутри работы, у меня много вложенных коллекций.
Проблема в том, что у меня есть несколько одинаковых продуктов с разными идентификаторами, которые мне нужно объединить в один, чтобы кто-то, глядя на бумагу, совершил меньше ошибок и мог просто посмотреть на количество.
Итак, мне нужно объединить продукты, но на самом деле мне просто нужно удалить все продукты с таким же именем и добавить их количество к количеству того, который не был удален.
Я могу получить список всех, что мне нужно удалить, к сожалению, в этот список входят и те, которые я не хочу удалять.
Вот что у меня есть:
Я получаю список продуктов
var ds = j.DesignSets;
IList<Product> productsList = new System.Collections.Generic.List<Product>();
foreach(var dsa in ds)
{
foreach(var p in dsa.DesignSetAreas)
{
foreach(var pr in p.Products)
{
if(pr.ProductMods.Count == 0)
{
if(pr.DeliveryCnt == 0)
{
productsList.Add(pr);
}
}
}
}
}
Затем я снова перебираю все, но на этот раз я создаю другой список внутри deignset, чтобы перечислить продукты, которые я собираюсь удалить.
Я также перебираю ранее созданный список, чтобы посмотреть, есть ли у меня продукты с таким же displayName.
foreach(var dsa in ds)
{
var deleteProducts = new List<Product>();
foreach(var p in dsa.DesignSetAreas)
{
foreach(var pr in p.Products)
{
if(pr.ProductMods.Count == 0)
{
if(pr.DeliveryCnt == 0)
{
var partQuantity = 0;
var partAmount = 0;
foreach(var product in productsList)
{
if(pr.Display == product.Display)
{
partQuantity = partQuantity + product.Quantity;
partAmount++;
pr.Quantity = partQuantity;
}
}
if(partAmount >= 2)
{
deleteProducts.Add(pr);
}
}
}
}
foreach(var item in deleteProducts)
{
p.Products.Remove(item);
}
}
}
Помимо беспорядка, этот код добавляет все продукты с одинаковыми именами, а затем удаляет их.
Я не против того, чтобы код был беспорядочным, я попытаюсь его почистить, пока я могу заставить его работать, я не против. Хотя, если у вас есть предложения по очистке, я был бы признателен.
Итак, к вопросу.
Как мне получить этот код для удаления всех продуктов с одним именем, кроме одного?
Заранее спасибо.