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



我有以下列表和类:

List<MyClass> MyList
public class MyClass
{
    public int id { get; set; }
    public bool checked { get; set; }
}

我也有两个变量:

int idToFind = 1234;
bool newcheckedvalue = true;

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

LINQ似乎是这个问题的解决方案,我只是不能得到正确的表达式。我可以在一个LINQ表达式中做到这一点吗?

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

var item = MyList.FirstOrDefault(r=> r.id == idtoFind && r.checked == newcheckedvalue);

要查找基于ID的项目,您可以这样做:

var item = MyList.FirstOrDefault(r=> r.id == idtoFind);

之后你可以设置/修改它的属性。

//Make sure to check against Null, as if item is not found FirstOrDefault will return null
item.checked = newcheckedvalue; //or any other value

示例(需要注意的是,MyClass类型必须是,在本例中是引用类型):

var found  = MyList.Where(ml=>ml.Id == 1234); 
foreach(var f in found)
    f.checked = newcheckedvalue;

相关内容

  • 没有找到相关文章

最新更新