Language Integrated Query
Después, el resultado del primer paso se mezcla en un mismo nivel.Estos operadores reciben un parámetro opcional lambda, que toma un valor de cada elemento en la colección y lo usa para encontrar la suma, el mínimo, el máximo o el promedio respectivamente de todos los elementos en la colección.Este operador recibe una expresión lambda que especifica cómo serán combinados los valores para formar un resultado intermedio o final.La función para extraer el valor de llave del objeto debe ser especificada por el usuario como un delegado.La función para recuperar el valor de llave que se retornará es un delegado.El operador SequenceEqual determina si todos los elementos de dos colecciones son iguales y tienen el mismo orden.El operador FirstOrDefault es como el primer operador, excepto que devuelve el valor predeterminado para el tipo de elemento (por lo general una referencia null) en caso de que no se satisfaga con el predicado.El operador LastOrDefault devuelve el valor predeterminado si no existe tal elemento.Se produce una excepción, si ninguno o más de un elemento satisface con el predicado.El operador ElementAt devuelve el elemento situado en un índice especificado de una colección.Estas extensiones del lenguaje han sido implementadas inicialmente en C# 3.0, VB 9.0 y Oxygene, aunque otros lenguajes como F# y Nemerle habían anunciado un soporte preliminar.El motor PLINQ puede ejecutar simultáneamente partes de una consulta en múltiples hilos, proporcionando así resultados más rápidos.Fue desarrollado independientemente de LINQ en 2001 por Julian Hyde, quien más tarde escribió el servidor OLAP Mondrian.