Sintaxis LINQ: Where
Al igual que sucede en SQL, la clausula where se utiliza para filtrar el resultado de una lista de objetos.
La signatura de este operador es la siguiente:
1: public static IEnumerable<T> Where<T>(this IEnumerable<T> items,
2: Func<T, bool> predicate);
3: public static IEnumerable<T> Where<T>(this IEnumerable<T> items,
4: Func<T,int, bool> predicate);
En la segunda signatura se puede observar que tiene un parámetro más. Este parámetro de tipo int nos permitirá indicar porque elemento, porque index, de la colección queremos empezar a filtrar. Esto puede resultar muy útil a la hora de paginar una colección con un número elevado de elementos. La sintaxis sería la siguiente:
1: void list = _developers.Where((d,index) =>
2: d.Language == "C#" && index >= 1);
Ejemplos
Para la realización de los ejemplos se ha utilizado el siguiente código:
1: public class Developer
2: { 3: public string Name { get; set; } 4: public string Language { get; set; } 5: public int Age { get; set; } 6: }
7:
8: public List<Developer> developers = new List<Developer> { 9: new Developer{ Name="Jorge", Language="C#"}, 10: new Developer{ Name="Pedro", Language="C#"}, 11: new Developer{ Name="Raul", Language="VB.NET"}, 12: };
Ejemplos 1
1: var list = from d in developers
2: where d.Language == "C#"
3: select new { d.Name, d.Language };
Resultado:
Jorge C#
Pedro C#
Ejemplos 2
1: var list = from d in developers
2: where d.Language == "C#" && d.Name == "Pedro"
3: select new { d.Name, d.Language };
Resultado:
Pedro C#
Ejemplos 3
1: var list = developers.Where((d, index)
2: => (index >= start && index< end));
Resultado:
Pedro C#