2

この方法で一連の値を分類するために takewhile を使用しています。

 var Range_1 = Dictionary_Name.TakeWhile (x=> x.Value < 50).toList();

ディクショナリ (String,int) には、次のような値が含まれています。

 [Item 1, 10]
 [Item 2, 20]
 [Item 3, 5]
 [Item 4, 3]
 [Item 5, 41]
 ,...

私が使用しているコードは正しい結果を生成しますが、値を次のように変更すると:

 var Range_1 = Dictionary_Name.TakeWhile (x=> x.Value < 10).toList();

空のコレクションを返します。

なぜ何も返さないのか知りたいです。

4

3 に答える 3

11

TakeWhile条件に一致しない最初の要素が見つかったときに停止します。そのため[Item 1, 10]、10 以上の値を持つ が検出され、反復が停止します。

代わりに、10 未満のすべての値を単純に返すようにしたいかもしれません。Where(t => t.Value < 10)

于 2013-08-06T20:52:52.573 に答える
1

最初の要素の値は 10 で、条件は(x=> x.Value < 10)であるため、空のセットを返す必要があります。10 未満の値をフィルタリングするだけの場合は、Where代わりに を使用しTakeWhileます。

于 2013-08-06T20:55:21.470 に答える