我想知道是否有办法从 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中做到这一点?
答案 0 :(得分:5)
您可以使用Enumerable.Skip按顺序绕过指定数量的元素:
bool result = myList.Skip(4).Any(a => a.flagTodo);
BTW 您无需验证列表长度 - 如果项目少于4项,结果将为false - Skip(4)
将返回空序列。 Any
返回false
,因为序列中的元素都不满足条件(序列为空)。
答案 1 :(得分:4)
您可以跳过前4个元素。
bool result = myList.Skip(4).Any(a => a.flagTodo);
但是在调用此语句之前,您需要先检查列表长度。
答案 2 :(得分:0)
使用其他人提到的Skip
或传递索引,以便您可以在Any
bool result = myList.Select((obj, index) => new { obj, index })
.Any(x => x.index > 4 && x.obj.flagTodo);