比较循环内项目的最佳方法

时间:2011-04-08 22:16:35

标签: c# collections

我有一组对象。我需要遍历集合并生成另一个集合。第二个集合中的每个项目都是第一个集合中两个项目的函数。所以要简化问题。

让我们假设集合是一组整数。

 List<int> myIntCollection = new List<int>() {1, 4, 6, 8, 7};

我需要生成第二个集合,其中每个项目是第一个集合中2个项目的总和。所以第二个集合在转换后会有这些元素。

 List<int> generatedCollection = new List<int>() {5, 10, 14, 15};

你可以看到第一个元素是5(它是顶部集合中前两个项目的总和),第二个元素是10,它是第一个集合中第二个和第三个项目的总和,所以上 。 。

3 个答案:

答案 0 :(得分:6)

您可以使用for循环:

List<int> result = new List<int>(source.Count - 1);

for (int i = 0; i < source.Count - 1; i++)
    result.Add(source[i] + source[i + 1]);

那不难!

答案 1 :(得分:0)

int i = 0;
generatedCollection.AddRange(
            myIntCollection.Where(j => i < myIntCollection.Count - 1).Select(
                j => myIntCollection[i] + myIntCollection[i++ + 1]));

答案 2 :(得分:0)

您可以使用Enumerable.Range方法动态创建集合,并获取每个索引的两个项目的总和:

List<int> generatedCollection =
  Enumerable.Range(0, myIntCollection.Length - 1)
  .Select(i => myIntCollection[i] + myIntCollection[i + 1])
  .ToList();