gpt4 book ai didi

.net - LINQ 是否在幕后迭代?

转载 作者:行者123 更新时间:2023-12-04 05:05:45 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How LINQ works internally?

(5 个回答)


7年前关闭。




这不是世界上最重要的问题,但作为一个即将毕业的人,我想我希望将这些知识向前推进。说了这么多,LINQ是如何根据我在后台提供的条件找到我需要的数据的呢?

考虑:

String[] straAr = {"Jordan","Jansyn","Corey","Josh","Whitney"};

var sel = from S in straAr
where S.Contains("syn")
select S;

当然,这将导致“Jansyn”。在我被介绍给 LINQ 之前,我会这样做:
String[] straAr = {"Jordan","Jansyn","Corey","Josh","Whitney"};

foreach(String s in straAr)
{
if(s.Contains("syn"))
{
Console.WriteLine(s);
}
}

它们都可以工作,但我认为 LINQ 的实现要优雅得多。谁能告诉我:
  • LINQ 如何在后台查询数据结构? Foreach?
  • 一种实现是否比另一种更有效?

  • 与往常一样,感谢您的任何意见!

    最佳答案

    我认为了解 LINQ 内部结构的最好方法是实际查看代码。好吧,您将无法查看原始代码,但是Edulinq真的是出于教育目的对其全部功能的重新实现。
    要直接回答您的至少一部分问题:

  • 没有 LINQ 通常不会在内部使用 foreach。大多数时候,enumerators直接使用,因为这样可以更好地控制正在发生的事情
  • 一般来说,第二种实现会更高效,因为 LINQ 提供了一些额外的特性(例如懒惰),这会使生成的代码稍微复杂一些。然而,这在实践中几乎不相关。
  • 关于.net - LINQ 是否在幕后迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15514413/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com