按Id将值分配给对象属性

时间:2015-07-27 09:35:52

标签: c#

我有一个用于保存值的对象的全局列表,值和ID将被解析为ObjectManager函数,Ids只能是列表中所述的内容。我希望函数更新与Id对应的值。

最初我尝试使用foreach循环,它不会更新列表中的对象。使用下面的代码确实更新了列表中的对象,但它只检查了解析的id,我现在正在尝试使用switch语句,早期。

实现我想要做的事情的最佳方式是什么?

示例代码:

public List<Object> obj = new List<Object>
            {
                new Object { id = 4, val = 20 },
                new Object { id = 1, val = 34 },
                new Object { id = 16, val = 27 },
                new Object { id = 9, val = 36 }
            };

public void ObjectManager(List<Object> myobj, int id, int val)
{
    int i = 0;
    int j = 0;
    while (i < myobj.Count)
    {
        if(myobj[i].id == id)
        {
            j = myobj[i].val;
            myobj[i].val = j + val; 
        }
    }
}

2 个答案:

答案 0 :(得分:3)

您可以使用FirstOrDefault()

选择要更新的项目

var variable = myobj.FirstOrDefault(o=>o.id = "YOUR_ID"

如果找不到该项,

FirstOrDefault()将返回null,因此我们需要在更新项目之前检查null

if (variable != null) variable.val = YOUR_VALUE

答案 1 :(得分:3)

您应该使用Dictionary

您会在Dictionary中找到许多与添加或更新相关的解决方案。例如thisthis