我想知道是否有办法从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);
顺便说一句 ,您不需要验证列表长度- 如果少于 4 个项目,结果将为 false -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);