c# - 如何使用 linQ 访问列表中的上一个项目?

标签 c# linq

我有:

List<int> A  = new List<int>(){1,2,3,4,5,6};

List<int> m=new List<int>();
for(int i=1;i<A.count;i++)
{
int j=A[i]+A[i-1];
m.add(j);
}

我如何使用 LinQ 执行相同的操作?

最佳答案

嗯,一个简单的翻译是:

var m = Enumerable.Range(1, A.Count - 1)
                  .Select(i => A[i] + A[i - 1])
                  .ToList();

但也要考虑:

var m = A.Skip(1)
         .Zip(A, (curr, prev) => curr + prev)
         .ToList();

或者使用 Jon Skeet 的分机 here :

var m = A.SelectWithPrevious((prev, curr) => prev + curr)
         .ToList();

但正如 Jason Evans 在评论中指出的那样,这对可读性或简洁性没有多大帮助,考虑到您现有的代码是完全可以理解的(而且很短),并且您希望实现所有无论如何将结果放入列表中。

确实没有什么问题:

var sumsOfConsecutives = new List<int>();

for(int i = 1; i < A.Count; i++)
   sumsOfConsecutives.Add(A[i] + A[i - 1]);

关于c# - 如何使用 linQ 访问列表中的上一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460106/

相关文章:

C# 让线程在出队时休眠?

C# linq查询数据表take方法

c# - LINQ 查询查找字符串包含任何字母的列

c# - 由于 Release模式下的包缩小,jQuery 崩溃

C#在重定向的HttpWebRequest中发送cookie

c# - 如何使用 C# 从 Windows 中提取位置信息?

c# - Linq 相交或连接以将一个集合中具有匹配属性的项目返回到另一个集合?

c# - 如何在 Linq to Entities 查询中调用本地方法?

c# - 以谓词为参数的方法

c# - 如何在 T-SQL 语句中找到 Apriori 关联?