关于c#:通过Id将值分配给对象属性


Assign Values to object properties by Id

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

最初我尝试使用一个foreach循环,它没有更新列表中的对象。使用下面的代码确实会更新列表中的对象,但它只检查中解析的ID,我现在在早期使用switch语句尝试此操作。

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

样本代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;
        }
    }
}


你应该用字典来做这个。

您可以在字典中找到许多与解决方案相关的添加或更新。像这个还是这个


您可以使用FirstOrDefault()选择要更新的项目。

江户十一〔一〕号

如果找不到该项,FirstOrDefault()将返回空值,因此在更新该项之前需要检查空值。

埃多克斯1〔3〕