一次更新多个元素 LINQ
是否可以使用 LINQ 对 List 中的每个元素设置属性。
例如:
var users = from u in context.Users where u.Name == "George" select u;
foreach (User us in users){
us.MyProp = false;
}
是否可以使其更清洁?
Is it possible to set property on each element from List using LINQ.
for example:
var users = from u in context.Users where u.Name == "George" select u;
foreach (User us in users){
us.MyProp = false;
}
Is it possible to make it cleaner ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
或者您可以将其转换为 ToList() 并使用 ForEach 方法。
更新多个属性
或者像这样
Or you can convert it to ToList() and use ForEach method.
to update more than one properties
Or like this
您可以创建自己的 ForEach 扩展方法:
然后您的代码可以简化为:
编辑:您还可以在调用 action() (没有双关语)后返回每个项目,以保持延迟执行不变。
You can create your own ForEach extension method:
Then your code can be simplified to:
EDIT: You could also yield return each item after the call to action() (no pun intended) to leave the deferred execution untouched.
什么是更干净是相当主观的。就我个人而言,我发现这种方法在清晰度和简单性方面很难被击败:
What is cleaner is quite subjective. Personally, I find this approach hard to beat for clarity and simplicity:
如果您对内存更新感兴趣,即数据库不会更新,那么您可以使用
If you're interested in in-memory update, that is the database is not going to be updated then you could use
我会这样做
看起来很脏,但如果询问(仅通过 select),如果您希望使用其他 C# 函数,
,您也可以使用 linq 函数并处理 IEnumerable 类型的列表。由于
.ToList()
在.Select()
之前,上面的代码变成了 IEnumerableLooks dirty but if asked (just via select), I'll do it this way
if you wish to use some other C# function, you can also use linq functions and work on IEnumerable type of lists.
Code above becomes IEnumerable because of the
.ToList()
prior to the.Select()
怎么样:
How about: