如何使用linq更改对象的值

Nov*_*Net 1 c# linq

我有以下声明:如果isdefault对此集合是真的,我需要将每个对象的isDefault属性设置为false.

  custHead.lstCustomziation.Where(x => x.IsDefaultSelected == true).Select(x=>{x.IsDefaultSelected=false});

lstCustomziation  is a collection.
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 12

LINQ用于查询.您应该使用foreach循环进行更改:

foreach (var item in custHead.lstCustomziation.Where(x => x.IsDefaultSelected))
{
    item.IsDefaultSelected = false;
}
Run Code Online (Sandbox Code Playgroud)

也就是说,无论如何,如果IsDefaultSelectedfalse其他项目,只要无条件地设置它可能更简单:

foreach (var item in custHead.lstCustomziation)
{
    item.IsDefaultSelected = false;
}
Run Code Online (Sandbox Code Playgroud)


D S*_*ley 5

Linq用于查询,而不是更新.您可以获取要更改的项目列表,然后使用常规循环进行更新:

var list = custHead.lstCustomziation.Where(x => x.IsDefaultSelected == true)

foreach(var item in list)
    item.IsDefaultSelected=false;
Run Code Online (Sandbox Code Playgroud)