What's the hardest or most misunderstood aspect of LINQ? [closed]
Solution 1:
Delayed execution
Solution 2:
I know the deferred execution concept should be beaten into me by now, but this example really helped me get a practical grasp of it:
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);
}
}
The above code returns the following:
Before add:
Bob
Alice
Trent
After add:
Bob
Alice
Trent
Mallory
Solution 3:
That there is more than just LINQ
to SQL
and the features are more than just a SQL
parser embedded in the language.
Solution 4:
Big O notation. LINQ makes it incredibly easy to write O(n^4) algorithms without realizing it, if you don't know what you're doing.