我有以下列表和课程:
List<MyClass> MyList
public class MyClass
{
public int id { get; set; }
public bool checked { get; set; }
}
我也有两个变量:
int idToFind = 1234;
bool newcheckedvalue = true;
我需要做的是搜索列表,然后找到ID等于
idToFind
值的MyClass对象。一旦将对象包含在列表中,我便想将类中checked属性的值更改为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