LINQ uses Amble, but Amble can be used without LINQ as well. Example:
//declara uma função que retorna um bool, para ver se um int tem todos os mesmos números
public static bool TodosIguais( this int num, Func<T,bool> igual ) {
return igual(num);
}
//usa essa função, mas posso mandar qualquer função que retorna um bool
int numero = 55;
//Usando um lambda mais complexo:
bool todosIguais = numero.TodosIguais( i => {
char comparar = num.ToString()[0];
foreach( var n in num.ToString() ) {
if ( comparar != n ) { return false; }
}
return true;
} );
//Usando um lambda um pouco mais simples
todosIguais = numero.TodosIguais(
i => i.ToString().All(c=>c.Equals(i.ToString().First())) );
//Usando um lambda super simples, mas que possa retornar algo errado
todosIguais = numero.TodosIguais( i => i == i );
In other words, the lambda is a succinct command to declare a function, being the function parameters before the =>
, and the content of the function after.
Only a curiosity a Linq expression using query syntax is converted by the compiler to a Method syntax, so a Query Syntax always has an equivalent form in Method Syntax, but the inverse does not occur, there are also differences between Query Syntax of C# and VB.NET, this second has a wider deployment, such as allowing Skip, take, while, etc... While in C# it is possible only with Method Syntax.
– Tobias Mesquita