在LINQ列表中搜索部分内容

时间:2012-12-18 11:25:05

标签: c# 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中做到这一点?

3 个答案:

答案 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);