首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用foreach循环的操作和LINQ之间的区别是什么?

使用foreach循环的操作和LINQ之间的区别是什么?
EN

Stack Overflow用户
提问于 2019-06-13 03:40:03
回答 1查看 90关注 0票数 0

我正在解决一个问题,我知道这些代码以不同的方式工作,但我不明白为什么第二个是不正确的,有什么不同。

代码语言:javascript
复制
public Person GetOldestMember()
{
    Person oldestPerson = people.OrderByDescending(x => x.Age).FirstOrDefault();

    return oldestPerson;
}

代码语言:javascript
复制
public Person GetOldestMember()
{
    Person oldestPerson = new Person(-1); //this is a constructor with parameter age

    foreach (Person person in people)
    {
        if (person.Age > oldestPerson.Age)
        {
            oldestPerson = person;
        }
    }

    return oldestPerson;
}
EN

回答 1

Stack Overflow用户

发布于 2019-06-13 03:50:11

关于LINQ查询,有一件事不是一目了然的,那就是它们往往“很快就会失败”。也就是说,一旦满足指定的条件,它们就退出循环,而不是迭代整个序列。

例如,如果序列中有任何项,FirstOrDefault()将获取序列中的第一个项并立即退出。如果没有,它会立即返回null。

但是,您的for循环将遍历序列中的每个元素。如果序列非常大,这可能会很耗时。

LINQ表达式非常有效,它只检索尽可能快地满足请求所需的数据。您不太可能编写更高效的for循环(尽管并非不可能)。

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

https://stackoverflow.com/questions/56569311

复制
相关文章

相似问题

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