繁体   English   中英

从列表中收集索引

[英]Collect indexes from list

c#中是否有linq函数,使您可以从特定范围的索引中收集IEnumerables?

一个例子是

        var objectArray = new string[] { "Bill", "Bob", "Joe", "Phil", "Tom", "Paul" };
        var indexArray = new int[] { 1, 3, 5 };

        var list = objectArray.Where(SOME_FUNCTION_TO_GET_INDEXES ??).ToList();

        //output would be list:
        //Bob
        //Phil
        //Paul

只需将SelectindexArray一起使用,并通过索引从objectArray返回该项目。

var list = indexArray.Select(i => objectArray[i]);

请注意,这对于任何允许建立索引的集合(例如ArrayList<T> )都非常有效。 在具有IEnumerableICollection的更一般的情况下,您将无法直接建立索引。 在这种情况下,您需要查看乔恩的答案。 根据所涉及列表的大小以及需要查找的项目数量,可能首先需要将IEnumerable转换为ArrayList (例如,使用ToArray )。

如果原始数据源已经可以通过索引访问,例如列表或数组,则可以使用Matt所示的indexArray.Select

如果有IEnumerable<T> ,则可以使用Where重载,它提供索引和值。 所以:

var list = objectArray.Where((value, index) => indexArray.Contains(index))
                      .ToList();

暂无
暂无

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

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