在列表中查找对象并替换其值

Woo*_*ody 1 c# linq class list

我有以下列表和类:

List<MyClass> MyList

public class MyClass
{
    public int id { get; set; }
    public bool checked { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我也有两个变量:

int idToFind = 1234;
bool newcheckedvalue = true;
Run Code Online (Sandbox Code Playgroud)

我需要做的是搜索列表并找到id等于该值的MyClass对象idToFind.一旦我在列表中有了对象,我就想将类中checked属性的值更改为值的newcheckedvalue值.

LINQ似乎是解决这个问题的方法,我只是无法正确表达.我可以在一个LINQ表达式中执行此操作吗?

Hab*_*bib 6

LINQ用于查询集合,而不是用于修改.你可以找到像这样的对象:

var item = MyList.FirstOrDefault(r=> r.id == idtoFind && r.checked == newcheckedvalue);
Run Code Online (Sandbox Code Playgroud)

要根据ID您唯一可以执行的操作找到该项目:

var item = MyList.FirstOrDefault(r=> r.id == idtoFind);
Run Code Online (Sandbox Code Playgroud)

稍后您可以设置/修改其属性.

//Make sure to check against Null, as if item is not found FirstOrDefault will return null
item.checked = newcheckedvalue; //or any other value
Run Code Online (Sandbox Code Playgroud)