我的对象层次结构如下:
class Detail
{
public List<Row> Rows { get; set; }
}
class Row
{
public List<Column> Columns { get; set; }
}
class Column
{
public string Name { get; set; }
public bool IsUpdated { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想设置column.IsUpdated = true其中column.Name ="id".我正在尝试这个,它不起作用.
detail.Rows.ForEach(r => r.Columns.Where(c => c.Name.ToLower().Equals("id")).ToList<Column>().Select(c => c.IsUpdated = true));
Run Code Online (Sandbox Code Playgroud)
LINQ的哲学是没有副作用.这就是为什么故意让你不容易做到这一点.你可以用经典的方式做到这一点
var cols = details.Rows.SelectMany(r => r.Columns)
.Where(c => c.Name.ToLower().Equals("id"));
foreach(var col in cols) {
col.IsUpdated = true;
}
Run Code Online (Sandbox Code Playgroud)
或者通过使用List.ForEach
,但以不同的方式:
details.Rows.SelectMany(r => r.Columns)
.Where(c => c.Name.ToLower().Equals("id")).ToList()
.ForEach(c => { c.IsUpdated = true });
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20033 次 |
最近记录: |