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

时间:2015-05-29 15:25:46

标签: c# linq list class

我有以下列表和课程:

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表达式中执行此操作吗?

2 个答案:

答案 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;