2010-06-07 19 views
9

si tengo este código de hoy para descubrir un total de suma usando LINQ:¿Cómo agregar una condición a una expresión lambda

return (MyArray.Sum(r => r.Trips); 

y quiero incluir solamente itms donde r.CanDrive == true.

¿se puede agregar una condición en una sola expresión linda lambda? ¿cómo hacer esto

Respuesta

16

Usted podría cadena de dos bits de LINQ juntos, así:

return MyArray.Where(r => r.CanDrive).Sum(r => r.Trips); 
+0

¿Qué pasa con el paréntesis inicial? – Codesleuth

+0

@Codesleuth - dedos gordos! Gracias ... –

+0

Tu varita de marcado está en la publicación :) – MPritchard

10

respuesta de David es del todo correcto, pero otra alternativa podría ser el uso de un operador condicional:

return MyArray.Sum(r => r.CanDrive ? r.Trips : 0); 

Usaría personalmente el formulario Where, pero pensé que presentaría una alternativa ...

(Otra alternativa más sería crear su propio Sum método que tomó tanto un predicado como una proyección, pero creo que eso está por encima.)

Cuestiones relacionadas