簡體   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