什么是最困难或最误解的LINQ的方面?

背景:在接下来的一个月中,我将在C#的上下文中提供三个有关或至少包含LINQ的讨论。 我想知道哪些主题值得给予相当多的关注,基于人们可能会觉得难以理解的内容,或者他们可能会误认为什么。 除了作为如何使用表达式树(通常为IQueryable )远程执行查询的示例之外,我不会专门讨论LINQ to SQL或实体框架。

那么,你发现LINQ什么难点? 你在误解方面看到了什么? 例子可能是以下任何一种,但请不要限制自己!

  • C#编译器如何处理查询表达式
  • Lambda表达式
  • 表达树
  • 扩展方法
  • 匿名类型
  • IQueryable
  • 推迟与立即执行
  • 流与缓冲执行(例如,OrderBy被延迟但被缓冲)
  • 隐式键入局部变量
  • 读取复杂的通用签名(例如Enumerable.Join)

  • 延迟执行


    我知道延迟执行的概念现在应该被殴打到我身上,但这个例子确实帮助我实际掌握了它:

    static void Linq_Deferred_Execution_Demo()
    {
        List<String> items = new List<string> { "Bob", "Alice", "Trent" };
    
        var results = from s in items select s;
    
        Console.WriteLine("Before add:");
        foreach (var result in results)
        {
            Console.WriteLine(result);
        }
    
        items.Add("Mallory");
    
        //
        //  Enumerating the results again will return the new item, even
        //  though we did not re-assign the Linq expression to it!
        //
    
        Console.WriteLine("nAfter add:");
        foreach (var result in results)
        {
            Console.WriteLine(result);
        }
    }
    

    上面的代码返回以下内容:

    Before add:
    Bob
    Alice
    Trent
    
    After add:
    Bob
    Alice
    Trent
    Mallory
    

    除了LINQ to SQL ,这些功能不仅仅是嵌入在语言中的SQL解析器。

    链接地址: http://www.djcxy.com/p/34229.html

    上一篇: What's the hardest or most misunderstood aspect of LINQ?

    下一篇: Query a collection using PropertyInfo object in LINQ