1

我想知道是否有办法从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 中做到这一点?

4

3 回答 3

5

您可以使用Enumerable.Skip按顺序绕过指定数量的元素:

bool result = myList.Skip(4).Any(a => a.flagTodo);

顺便说一句 ,您不需要验证列表长度- 如果少于 4 个项目,结果将为 false -Skip(4)将返回空序列。并Any返回false,因为序列中的任何元素都不满足条件(序列为空)。

于 2012-12-18T11:25:57.647 回答
4

您可以跳过前 4 个元素。

 bool result = myList.Skip(4).Any(a => a.flagTodo);

但是在调用此语句之前,您需要先检查您的列表长度。

于 2012-12-18T11:26:56.527 回答
0

像其他人提到的那样使用Skip或传递索引,以便您可以在Any

bool result = myList.Select((obj, index) => new { obj, index })
                    .Any(x => x.index > 4 && x.obj.flagTodo);  
于 2012-12-18T11:30:59.833 回答