, - , , , - . , , , , .
Linq, , .
.NET 1.0 . . , . ( C, ++ ) / ( Javascript ). ββ
:
public delegate int MyDelegate(double someValue, double someOtherValue);
, , , .
- .
public int CompareDoubles(double x, double y)
{
if (x < y) return -1;
return y < x ? 1 : 0;
}
MyDelegate dele = CompareDoubles;
dele.Invoke(1.0, 2.0) dele(1.0, 2.0).
, .NET, , CompareDoubles. , , , , public int CompareDoubles(double x, double y, double z){β¦} , CompareDoubles dele, . , CompareDoubles , double int, CompareDoubles .
, , .
, .NET 2.0, generics, , # 2 , . 2.0, :
MyDelegate dele = delegate (double x, double y)
{
if (x < y) return -1;
return y < x ? 1 : 0;
};
# 2, , " " (, .NET, #, # ). , , , , .
, .NET 3.5 - ( ) Func Action ( , , , ), # 3, -.
, .
:
var func = (int i) => i * 2;
var , , , , lamdas , , , .
:
Func<int, int> func = i => i * 2;
:
Func<int, int> func = delegate(int i){return i * 2;};
, , - :
int <>SomeNameImpossibleInC# (int i)
{
return i * 2;
}
Func<int, int> func = <>SomeNameImpossibleInC#;
:
Expression<Func<int, int>> func = i => i * 2;
:
Expression<Func<int, int>> func = Expression.Lambda<Func<int, int>>(
Expression.Multiply(
param,
Expression.Constant(2)
),
param
);
.NET 3.5 Linq, . , Linq System.Linq.Expressions. , , , - , ( , , ) , .
Linq . IQueryable IQueryable<T> IEnumerable IEnumerable<T>. , "" , "" , .
. a IEnumerable<T> IQueryable<T> AsQueryable, , IQueryable<T> IEnumerable<T>, , IQueryable<T> IEnumerable<T>.
. Select ( , , , , ):
public static IEnumerable<TResult> Select(this IEnumerable<TSource> source, Func<TSource, TResult> selector)
{
foreach(TSource item in source) yield return selector(item);
}
, , , Expression<TSource, TResult>, , Select , , . , , Select , Select!
, , . SQL, Compile() , Select ..
, . ( , Compile() ). - , . , .
, , .
public string IntString(int num) { return num.ToString(); }
, -:
Enumerable.Range(0, 10).Select(i => IntString(i));
lambda, , , , . , :
public string MyAnonymousMethod(int i){return IntString(i);}
MyAnonymousMethod ; , , IntString(i) , IntString :
Enumerable.Range(0, 10).Select(IntString);
( . ) , . , ReSharper "Convert to Method Group" , , ( ReSharper ).
-, . IQueryable<T> , , (, SQL ). IEnumerable<T> , .NET. ( ) Compile(), : , - , " ", -, SQL.
, -, i => i * 2, IQueryable<T> IEnumerable<T> - , ( , , ). , - Func<> , , , , , . , , linq " ", , .
95% , . , 95% , " " , , ", , . ? ?". 5% , " , ". ( , , , ).
, , , , , , , , " , grok".