有没有更好的方法来使用LINQ进行这些分配?
IEnumerable<SideBarUnit> sulist1 = newlist.Where(c => c.StatusID == EmergencyCV.ID);
foreach (SideBarUnit su in sulist1) su.color = "Red";
Run Code Online (Sandbox Code Playgroud)
你可以做这样的事情,正如其他答案在这里指出的那样,但是你不再使用LINQ了.
Eric Lippert写了一篇关于这个主题的优秀博客文章,我强烈建议你阅读.这是一段摘录:
出于两个原因,我在哲学上反对提供这样的方法.
第一个原因是这样做违反了所有其他序列运算符所基于的函数式编程原则.显然,调用此方法的唯一目的是引起副作用.
表达式的目的是计算一个值,而不是引起副作用.
...
第二个原因是,这样做会增加语言的新代表性能力.这样做可以让你重写这个完全清晰的代码:
Run Code Online (Sandbox Code Playgroud)foreach(Foo foo in foos){ statement involving foo; }进入这段代码:
Run Code Online (Sandbox Code Playgroud)foos.ForEach((Foo foo)=>{ statement involving foo; });它使用几乎完全相同的字符,顺序略有不同.然而第二个版本更难理解,更难调试,并引入了闭包语义,从而可能以微妙的方式改变对象的生命周期.
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |