首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回列表中两个变量索引之间的元素

返回列表中两个变量索引之间的元素
EN

Stack Overflow用户
提问于 2015-06-12 11:19:00
回答 5查看 3.9K关注 0票数 4

我希望返回列表中两个变量索引之间的元素。

举个例子,考虑到这个清单-

代码语言:javascript
运行
复制
List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

我想循环遍历用于索引值的to变量的列表。让我们调用索引值X和Y。因此,如果X等于索引值0,Y等于值5,我需要遍历索引0-5并返回所有元素值。例如,X和Y后来可能成为5到8的指标值。我怎样才能做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-06-12 11:23:20

您可以使用List.GetRange

代码语言:javascript
运行
复制
var result = list.GetRange(X, Y-X+1);

或者简单的for循环

代码语言:javascript
运行
复制
List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = X; i <= Y; i++)
{
    Console.WriteLine(list[i]);
}

或者用你想要的方式重新发明轮子

代码语言:javascript
运行
复制
public static class Extensions
{
    public static IEnumerable<T> GetRange<T>(this IList<T> list, int startIndex, int endIndex)
    {
        for (int i = startIndex; i <= endIndex; i++)
        {
            yield return list[i];
        }
    }
}

foreach(var item in list.GetRange(0, 5))
{
     Console.WriteLine(item);
}
票数 5
EN

Stack Overflow用户

发布于 2015-06-12 11:21:34

您可以使用Enumerable.SkipEnumerable.Take

代码语言:javascript
运行
复制
var res = list.Skip(noOfElementToSkip).Take(noOfElementsToTake);

使用变量作为索引

代码语言:javascript
运行
复制
var res = list.Skip(x).Take(y-x+1);

备注您需要将开始元素索引传递给Skip,对于获取元素数,您需要在接受参数中传递所需元素数减去开始元素号,再加上一个列表是基于零的索引。

票数 6
EN

Stack Overflow用户

发布于 2015-06-12 11:24:22

代码语言:javascript
运行
复制
int x = 0, y = 5;
List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (; x < y; x++)
{
    Console.WriteLine(list[x]);
}

如果X总是比Y小的话,这是可行的。如果您不知道哪个更大,那么在循环之前添加以下内容:

代码语言:javascript
运行
复制
 if (x > y) 
 {
      x = x ^ y;
      y = y ^ x;
      x = x ^ y;
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30801770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档