繁体   English   中英

在做其他事情时如何使用Linq构造列表?

[英]how to construct a list using Linq, while doing something else?

例如

          foreach (var item in List<int> a)
           {
            b.add(item);
            c+=item;
            dosomething();
           }

怎么写成Linq形式? 还是有必要?

我猜它具有以下格式: var b = a.xxxx(x=>(c+=x;dosomething())).ToList()

由于LINQ实际上是一种查询语言,因此我要说,在查询被评估时具有次要效果的查询是不好的样式。 我个人要么保留现状,要么将其更改为以下形式:

var c = a.Sum();
var b = a.ToList();
foreach(var item in a)
{
    DoSomething();
}

即使最终要遍历列表多次,也可以轻松浏览每一行代码并立即知道它的作用。

您可以这样做:

var b = a.Select(i => { c += i; dosomething(); return i; }).ToList();

请注意,这可能被视为不良做法。 foreach循环可能更具可读性,因此更易于维护。 (由于列表中的每个项目都没有执行跳转指针指令,因此性能也会更高。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM