2012-12-18 97 views
1

我想知道是否有從一個特定的指數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中完成它?

回答

5

您可以使用Enumerable.Skip繞過序列元素的指定數量:

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

BTW你不需要驗證列表長度 - 如果少於4項,結果將是假 - Skip(4)將返回空序列。並且Any返回false,因爲沒有序列中的元素滿足條件(序列爲空)。

4

您可以跳過前4個元素。

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

但是您需要在調用此語句之前首先檢查您的列表長度。

0

要麼使用Skip如其他人所說的或通過索引,使您可以在使用它Any

bool result = myList.Select((obj, index) => new { obj, index }) 
        .Any(x => x.index > 4 && x.obj.flagTodo);