【发布时间】:2017-02-24 05:32:30
【问题描述】:
我已经创建了一个对象,遗憾的是我一生都无法弄清楚如何使用散列键创建一个 3 属性对象(几乎像字典,但不是键和值,而是键、值 1 和值 2 )
作为一种变通方法,我在对象列表上使用 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 value of quantityShipped,本质上是value1,以及一个int value of quantityOrdered,本质上 value2)?
【问题讨论】:
-
您是希望
quantityShipped和quantityOrdered参与密钥的唯一性,还是严格要求ItemID成为密钥? -
只是 itemID,quantityShipped 用于稍后的报告,quantityOrdered 用于与 quantityShipped 进行比较以仅在商品已完全发货时标记已发货,因此它们不需要唯一或部分任何组合键,仅绑定到项目 ID
标签: c# linq collections hashcode