[英]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
只需將Select
與indexArray
一起使用,並通過索引從objectArray
返回該項目。
var list = indexArray.Select(i => objectArray[i]);
請注意,這對於任何允許建立索引的集合(例如Array
和List<T>
)都非常有效。 在具有IEnumerable
或ICollection
的更一般的情況下,您將無法直接建立索引。 在這種情況下,您需要查看喬恩的答案。 根據所涉及列表的大小以及需要查找的項目數量,可能首先需要將IEnumerable
轉換為Array
或List
(例如,使用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.