使用LINQ更新集合中特定项的单个属性的最简单/最简单的方法是什么?
例如,如果我有以下列表:
public class Ticket
{
public string Name { get; set; }
public string Code { get; set; }
public bool Selected { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何使用LINQ更新Ticket项的"Selected"属性,因为其"Name"属性的值为"Beach".在SQL中它将是:
UPDATE Tickets SET Selected = true WHERE Name = 'Beach'
Run Code Online (Sandbox Code Playgroud)
我以为我跟这个......
tickets.Select(x => { x.Selected = true; return x; }).ToList().Where(x => x.Name == "Beach");
Run Code Online (Sandbox Code Playgroud)
Stu*_*art 31
您可以更改顺序,然后使用ForEach运算符:
tickets
.Where(x => x.Name == "Beach")
.ToList()
.ForEach(x => { x.Selected = true; });
Run Code Online (Sandbox Code Playgroud)
注意:
ToList()需要,因为IEnumerable的不支持的ForEach在LINQ的-见LINQ等效的foreach为IEnumerable的<T>foreach(x in list)C#循环 SubmitChanges()才能保留你的更改.迟到的答案,但我认为我们没有必要转换ToList()为斯图尔特提到的实际上我们能做的只是调整斯图尔特代码(这是一段很棒的代码)如下
tickets
.Where(x => x.Name == "Beach")
.All(x => x.Selected = true);
Run Code Online (Sandbox Code Playgroud)
另外一个选项
tickets
.Where(x => x.Name == "Beach")
.All(x => { x.Selected = true; return true; });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28976 次 |
| 最近记录: |