有一个字典:
public Dictionary<int, OrderModel> x = new Dictionary<int, OrderModel>();
有一个 OrderModel :
public class OrderModel
{
public int? Id { get; set; }
public int OrderStatusId { get; set; }
public int MenuId { get; set; }
public ICollection<DishModel> Dishes { get; set; }
}
用户有一个产品列表。模型在这里:
public class DishModel
{
public int ProvisionerId {get;set;}
}
每个产品都有自己的按钮。
单击此按钮时,将发生以下情况:
//OrderModel этого товара отправляется в Dictionary, где происходит проверка
public void method(DishModel dishModel){
//Если элемент Dictionary по ключу dishModel.ProvisionerId не пустой, то засунь в него элемент типа OrderModel)
if (x.TryGetValue(dishModel.ProvisionerId, out OrderModel checkForNull))
{
beforSerializeForProvisioners[dishModel.ProvisionerId] = OrderModel;
}
//Иначе если элемента Dictionary с таким ключом нет, то создай его.
else
{
beforSerializeForProvisioners.Add(dishModel.ProvisionerId, OrderModel);
}
}
我的问题是什么:
每个产品都有自己的供应商。
供应商 n 号。
你可以得到这个数额。
你需要这样做:
Если товар имеет поставщика 1, то пусть он сохранится в Dictionary с ключом 1
Иначе если товар имеет поставщика 2, то пусть он сохранится в Dictionary с ключом 2
...и т.д.
但问题是这样的:
Когда пользователь нажал на товар, допустим с поставщиком 1, то он успешно создал Dictionary[1] и дал этому ключу значение.
Если ещё нажать на ещё один товар этого же поставщика, то всё успешно повторится.
Но если нажать на товар от другого поставщика, то происходит какая-то магия.
Он в Dictionary[1] добавляет этот товар от другого поставщика.
Он создает Dictionary[2] и туда также добавляет этот товар.
有2个解决方案。
1. Как-то правильно организовать добавление. Но у меня MVVM-паттерн, так что придется слишком многое выкладывать и адаптировать, чтобы была соблюдена конфиденциальность.
2. Перебрать весь Dictionary и его значения.
我更倾向于第二种选择。
因此,您需要这样做:
Provisioners x = new Provisioners();
for(int i=0;i<x.Count();i++){
foreach(DishModel y in Dictionary[x[i]]){
if(y.ProvisionerId != Dictionary[x[i]].Dishes.ToList()[0].ProvisionerId)
{
Dictionary[x[i]].Dishes.Remove(y);
}
}
但是当 Remove();
VisualStudio2017 抱怨 Dictionary.Dishes 数组已被修改并且 foreach 已停止工作。
我明白为什么它被停产了。但是,用不同的提供商删除项目的最佳方法是什么?
字典中的键是供应商 ID。