我想知道是否有從一個特定的指數在LINQ搜索通過LINQ
這種搜索方式是我想例如做:
//search after the 4th element if exist any true
bool result = myList.Any(a=>a.flagTodo)
// in my case I want to do like: myList.where(a=>a.index >4).Any(a=>a.flagTodo)
有什麼辦法可以在同一個linq中完成它?
我想知道是否有從一個特定的指數在LINQ搜索通過LINQ
這種搜索方式是我想例如做:
//search after the 4th element if exist any true
bool result = myList.Any(a=>a.flagTodo)
// in my case I want to do like: myList.where(a=>a.index >4).Any(a=>a.flagTodo)
有什麼辦法可以在同一個linq中完成它?
您可以使用Enumerable.Skip繞過序列元素的指定數量:
bool result = myList.Skip(4).Any(a => a.flagTodo);
BTW你不需要驗證列表長度 - 如果少於4項,結果將是假 - Skip(4)
將返回空序列。並且Any
返回false
,因爲沒有序列中的元素滿足條件(序列爲空)。
您可以跳過前4個元素。
bool result = myList.Skip(4).Any(a => a.flagTodo);
但是您需要在調用此語句之前首先檢查您的列表長度。
要麼使用Skip
如其他人所說的或通過索引,使您可以在使用它Any
bool result = myList.Select((obj, index) => new { obj, index })
.Any(x => x.index > 4 && x.obj.flagTodo);