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 に答える