什么是最困难或最误解的LINQ的方面?
背景:在接下来的一个月中,我将在C#
的上下文中提供三个有关或至少包含LINQ
的讨论。 我想知道哪些主题值得给予相当多的关注,基于人们可能会觉得难以理解的内容,或者他们可能会误认为什么。 除了作为如何使用表达式树(通常为IQueryable
)远程执行查询的示例之外,我不会专门讨论LINQ
to SQL
或实体框架。
那么,你发现LINQ
什么难点? 你在误解方面看到了什么? 例子可能是以下任何一种,但请不要限制自己!
C#
编译器如何处理查询表达式 IQueryable
延迟执行
我知道延迟执行的概念现在应该被殴打到我身上,但这个例子确实帮助我实际掌握了它:
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
解析器。
上一篇: What's the hardest or most misunderstood aspect of LINQ?