2

这不是世界上最重要的问题,但作为一名即将毕业的学生,​​我想我希望能够继续掌握这些知识。说了这么多,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 如何在后台查询数据结构?前锋?

  • 一种实现比另一种更有效吗?

一如既往,感谢您的任何意见!

4

1 回答 1

3

我认为了解 LINQ 内部结构的最佳方法是实际查看代码。好吧,您将无法查看原始代码,但Edulinq确实是出于教育目的对其全部功能进行了很好的重新实现。

要直接回答您的至少部分问题:

  • 没有 LINQ 通常不会在内部使用 foreach。大多数时候,直接使用枚举器,因为这样可以更好地控制正在发生的事情
  • 一般来说,第二种实现会更有效,因为 LINQ 提供了一些额外的特性(例如惰性),这会使生成的代码稍微复杂一些。然而,这在实践中几乎没有意义。
于 2013-03-20T05:19:45.613 回答