2014-05-23 82 views
0

我有這樣的代碼:List.All()更改值隨機

if (recipe.All(i => 
{ 
    Item item = inventory.Inventory.FirstOrDefault(x => x != null && x.ID == i.ID); 

    if (item != null) 
    Debug.WriteLine(item.Amount +" - " +i.Amount + "->" + i.ID); //Wrong values! 

    return (item == null) ? false : (item.Amount >= i.Amount); 

})) 

配方包含了所有需要的特定配方的項目。

基本上第一行(Item item = inv ...)獲取庫存中與配方中ID相同的物料副本。

它確實有效,但!價值觀正在改變!

我在庫存3木頭,當我創建4個棒(這是2個木材),結果我得到的是這樣的:

3 - 2->10 
1 - 0->10 
1 - 1->10 

X - Y - >ž

X =我的廣告資源中的項目數量。

y =該配方所需的金額(該項目的金額)。

z =食譜正在查找的項目的ID。

可能是什麼問題?

謝謝。

+0

請在編寫問題時注意預覽窗口,您的代碼沒有理由超過此限。 – paqogomez

+0

你是說實際值發生變化還是列表中的項目順序? – Magnus

+0

值,我想出來檢查我的評論下面的答案 –

回答

2

在內存列表中 - 沒有。

如果指向SQL查詢,那麼是的,除非強加排序順序,否則不保證排序順序。這是人們在SQL書籍中學習的第一課。

+0

我不使用sql。我將通過我創建的Recipe類的列表。 –

+0

可能是什麼問題? –

+2

你不顯示的錯誤代碼?不能在沒有看到底層實現的情況下回答。 – TomTom