比較問題的另一個列表。我現在想要將一個項目的數量與另一個數量進行比較,如果第一個項目的數量大於或等於第二個項目,則返回true。比較列表的值
public bool Equals(Item item1, Item item2)
{
if (item1.ItemName.Equals(item2.ItemName) && item1.ItemCount >= item2.ItemCount)
{
return true;
}
但是不管第一個項目的數量是多少,它總是返回true。這個代碼塊有問題還是其他地方的問題?
var commonItems = Items.Intersect(Inventory.Items, new ListComparer()).ToList();
if (commonItems.Count() == Items.Count())
{
return Output;
}
這是我在比較列表。項目將有3個類Item的對象。 1塊岩石,1枝樹枝和2棵葡萄藤。這與我的庫存進行比較,即使我只有1個葡萄藤,它也會返回true。
忘了補充一點,第一個代碼塊是在一個名爲
public class ListComparer :IEqualityComparer<Item>
我在代碼中看不到任何列表。 – MarcinJuraszek 2014-10-09 00:54:12
問題必須是Item類的ItemCount成員(提供的項目匹配EXACT名稱 - 區分大小寫) – 2014-10-09 00:56:23
呃,你打破了'Equals'的語義(參見[guidelines](http://msdn.microsoft .com/en-us/library/bsc2ak47.aspx) - 在頁面的中間位置)。奇怪的事情將會發生。如果a等於b,那麼b應該等於a。你想用這個做什麼? – Blorgbeard 2014-10-09 01:21:38