我已经创建了一个对象,可悲的是我的生活我无法弄清楚如何用散列键创建一个3属性对象(几乎就像字典,而不是键和值,值1和值2)用linq更新对象属性
作为解决方案我在对象列表上使用linq,它工作正常,但我想知道,因为linq是查询语言,您可以更新它的对象而不创建新对象?
我想基本上做到这一点
public void AddLineItemFulFilled(string itemID, int quantityOrdered, int quantityShipped)
{
if (!LineItems.Any(li => li.LineItemID.Equals(itemID)))
LineItems.Add(new LineItemModel(lineItem, quantityOdered, quantityShipped));
else
{
int matchingItem = 0;
foreach(LineItemModel modUpdate in LineItems)
{
if(modUpdate.LineItemID.Equals(itemID) && matchingItem <= 1)
{
modUpdate.QauntityShipped += quantityShipped;
matchingItem++;
}
}
}
else if(modUpdate.LineItemID.Equals(itemID))
LineItems.RemoveAt(LineItems.InexOf(modUpdate));
}
我会得到与此相同的结果?
public void AddLineItemFulFilled(string itemID, int quantityOrdered, int quantityShipped)
{
if (!LineItems.Any(li => li.LineItemID.Equals(itemID)))
LineItems.Add(new LineItemModel(lineItem, quantityOdered, quantityShipped));
else
LineItems.FirstOrDefault(li => li.LineItemID.Equals(itemID)).QauntityShipped += quantityShipped;
}
或者是否会使用该ItemID创建第二个LineItemModel对象?这个对象有3个属性,一个ItemID字符串用作事实上的键,一个int值是quantityShipped,本质上是value1,一个int值是quantityOrdered ,本质上是价值2)?
您是否希望'quantityShipped'和'quantityOrdered'参与密钥的唯一性,还是您希望'ItemID'成为密钥? – Tim
只是ITEMID,该quantityShipped是报告后和quantityOrdered是quantityShipped比较,只标注一个项目发运如果该项目完全出货,所以他们并不需要成为任何组合密钥的唯一或部分,只是绑住该项目ID – davidp04