我有以下列表和课程:
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表达式中执行此操作吗?
答案 0 :(得分:5)
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
答案 1 :(得分:2)
示例(需要注意的是MyClass
类型必须是类,在此示例中为引用类型):
var found = MyList.Where(ml=>ml.Id == 1234);
foreach(var f in found)
f.checked = newcheckedvalue;