我已經創建了一個對象,可悲的是我的生活我無法弄清楚如何用散列鍵創建一個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