有没有办法在 LINQ 中设置值?
有没有更好的方法来使用 LINQ 完成这些作业?
IEnumerable<SideBarUnit> sulist1 = newlist.Where(c => c.StatusID == EmergencyCV.ID);
foreach (SideBarUnit su in sulist1) su.color = "Red";
Is there a better way to do these assignments with LINQ?
IEnumerable<SideBarUnit> sulist1 = newlist.Where(c => c.StatusID == EmergencyCV.ID);
foreach (SideBarUnit su in sulist1) su.color = "Red";
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
不。
您可以这样做,正如这里的其他答案所指出的那样,但是您将不再使用 LINQ。
Eric Lippert 撰写了一篇关于这个主题,我强烈建议您阅读。以下是摘录:
No.
You can do such a thing, as the other answers here point out, but then you are no longer using LINQ.
Eric Lippert wrote an excellent blog post about this very subject, which I highly recommend you read. Here is an excerpt:
Linq 的重点是选择,而不是更新。
但是您可以使用 ToList 和 List 的 ForEach 来更新元素:但
我不确定可读性是否更好......
Linq is all about selecting, not updating.
But you could use ToList and List's ForEach to update the elements:
I'm not sure the readability is better though...
使用 List.ForEach() 方法:
PS:我知道 Eric Lippert 的关于
ForEach() 与 foreach
的文章,但无论如何它很有用,我更喜欢它而不是for/foreach
循环编辑:关于评论中有关性能命中
Enumerable.ToList()
实现的问题,因此性能命中是创建新
List<>()
的时候实例。MSDN 说接下来是 List<>(IEnumerable<>) ctor :
所以会有一个所有列表的复制操作
Using List.ForEach() method:
PS: I know about Eric Lippert's article aboout
ForEach() vs foreach
, but anyway it is useful and I preffer it rather thanfor/foreach
loopsEDIT: regarding question in comment about performance hits
Enumerable.ToList()
implemented asso performance hit is a time to create a new
List<>()
instance.MSDN says next for List<>(IEnumerable<>) ctor:
So there is would be a copy operation of all list
最简单的方法是定义一个
foreach
扩展方法,该方法允许您将其添加到此类查询的末尾。例如用法:
The simplest way is to define a
foreach
extension method which allows you to add it onto the end of a query of this sort. For exampleusage:
LINQ 的目的主要是查询/投影/转换数据。
您可能想要使用 ForEach 扩展方法。但请参阅此讨论了解更多详细信息。
LINQs purpose is mainly to query/project/transform data.
You might want to use the ForEach extension method. But see this discussion for more detail.
您可以在 Select 语句中使用匿名方法:
You could use an anonymous method in a Select statement: