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: