使用TakeWhile()返回值的范围

Tra*_*ent 1 c# linq

我正在使用takewhile以这种方式对一系列值进行分类:

 var Range_1 = Dictionary_Name.TakeWhile (x=> x.Value < 50).toList();
Run Code Online (Sandbox Code Playgroud)

字典(String,int)包含如下值:

 [Item 1, 10]
 [Item 2, 20]
 [Item 3, 5]
 [Item 4, 3]
 [Item 5, 41]
 ,...
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码然后生成正确的结果但是当我将值更改为like时:

 var Range_1 = Dictionary_Name.TakeWhile (x=> x.Value < 10).toList();
Run Code Online (Sandbox Code Playgroud)

它返回一个空集合.

我想知道它为什么不返回任何东西.

Blo*_*ard 10

TakeWhile将在找到与条件不匹配的第一个元素时停止.所以它看到[Item 1, 10],其值不小于10,因此它停止迭代.

也许你想要的是,它只会返回小于10的所有值.Where(t => t.Value < 10)

  • @Jack我会在`Dictionary <TKey,TValue>中添加它,那里**不是**任何排序,所以最大元素可能是第一个,中间最小,随机元素可能是最后一个. (2认同)