我有以下列表和类:
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;