2014-05-23 52 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