Can anyone explain what are the LINQ, Lambda, Anonymous Methods, Delegates meant?
How these 3 are different for each other?
Was one replaceable for another?
I didn't get any concrete answer when i did Googling
Can anyone explain what are the LINQ, Lambda, Anonymous Methods, Delegates meant?
How these 3 are different for each other?
Was one replaceable for another?
I didn't get any concrete answer when i did Googling
LINQ is a broad technology name covering a large chunk of .NET 3.5 and the C# 3.0 changes; "query in the language" and tons more.
A delegate is comparable to a function-pointer; a "method handle" as an object, if you like, i.e.
Func<int,int,int> add = (a,b) => a+b;
is a way of writing a delegate that I can then call. Delegates also underpin eventing and other callback approaches.
Anonymous methods are the 2.0 short-hand for creating delegate instances, for example:
someObj.SomeEvent += delegate {
DoSomething();
};
they also introduced full closures into the language via "captured variables" (not shown above). C# 3.0 introduces lambdas, which can produce the same as anonymous methods:
someObj.SomeEvent += (s,a) => DoSomething();
but which can also be compiled into expression trees for full LINQ against (for example) a database. You can't run a delegate against SQL Server, for example! but:
IQueryable<MyData> source = ...
var filtered = source.Where(row => row.Name == "fred");
can be translated into SQL, as it is compiled into an expression tree (System.Linq.Expression
).
So:
Although the title of this link is Anonymous methods it covers delegates, anonymous methods and lambda expressions.
LINQ Lambda Expressions anonymous methods delegates
those are the full explanations from MSDN, most with examples...