首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LINQ where vs takewhile

LINQ where vs takewhile
EN

Stack Overflow用户
提问于 2011-02-18 00:33:12
回答 6查看 40.6K关注 0票数 108

我想知道TakeWhileWhere LINQ方法之间的区别.I从MSDN .But得到了以下数据,这对我来说没有意义

Where(IEnumerable、Func)

根据谓词筛选一系列值。TakeWhile(IEnumerable、Func)

只要指定的条件为真,就返回序列中的元素。

欢迎所有的意见。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-02-18 00:37:32

当条件为false时,TakeWhile将停止,Where将继续查找与条件匹配的所有元素

代码语言:javascript
复制
var intList = new int[] { 1, 2, 3, 4, 5, -1, -2 };
Console.WriteLine("Where");
foreach (var i in intList.Where(x => x <= 3))
    Console.WriteLine(i);
Console.WriteLine("TakeWhile");
foreach (var i in intList.TakeWhile(x => x <= 3))
    Console.WriteLine(i);

给出

代码语言:javascript
复制
Where
1
2
3
-1
-2
TakeWhile
1
2
3
票数 176
EN

Stack Overflow用户

发布于 2011-02-18 00:35:47

Where可以检查整个序列以查找匹配项。

代码语言:javascript
复制
Enumerable.Range(1, 10).Where(x => x % 2 == 1)
// 1, 3, 5, 7, 9

当遇到第一个不匹配时,TakeWhile将停止查找。

代码语言:javascript
复制
Enumerable.Range(1, 10).TakeWhile(x => x % 2 == 1)
// 1
票数 34
EN

Stack Overflow用户

发布于 2011-02-18 00:39:20

假设您有一个包含[1, 3, 5, 7, 9, 0, 2, 4, 6, 8]的数组。现在:

var whereTest = array.Where(i => i <= 5);将返回[1, 3, 5, 0, 2, 4]

var whileTest = array.TakeWhile(i => i <= 5);将返回[1, 3, 5]

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5031726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档