例如
foreach (var item in List<int> a)
{
b.add(item);
c+=item;
dosomething();
}
如何将其写入Linq表单?还是有必要?
我猜它有以下格式:var b = a.xxxx(x=>(c+=x;dosomething())).ToList()
答案 0 :(得分:4)
由于LINQ实际上是一种查询语言,我认为在评估时使查询具有次要效果是不好的方式。我个人要么保留现状,要么将其更改为:
var c = a.Sum();
var b = a.ToList();
foreach(var item in a)
{
DoSomething();
}
即使您最终多次遍历列表,也可以更轻松地浏览每行代码并立即知道它的作用。
答案 1 :(得分:3)
你可以这样做:
var b = a.Select(i => { c += i; dosomething(); return i; }).ToList();
请注意,这可能被认为是不好的做法。 foreach
循环可能更具可读性,因此更易于维护。 (它也会更高效,因为没有为列表中的每个项目执行跳转指针指令。)