Linq: seleccione todos los elementos agrupados por nombre con recuento igual a 0
Frecuentes
Visto 3,921 veces
1
Tengo pedidos de mesa (nombre, fecha, precio)
horse, 7.5.2012, 100
cat, 14.5.2012, 50
horse, 8.5.2012, 70,
dog, 13.5.2012, 40
y quiero mostrar el nombre de los pedidos y la suma del precio el lunes. salida lo que quiero:
horse, 100
cat, 50
dog, 0
pero ahora solo tengo esto:
horse, 100
cat, 50
con esta consulta de linq
from c in orders
where (int)c.date.DayOfWeek == this._monday
group c by c.name into g
select new {
Name = g.Key,
Price = g.Sum(c => c.Price)
}
¿Me pueden ayudar, qué debo cambiar para obtener el resultado que quiero, por favor? :)
1 Respuestas
8
Intente agrupar primero y luego filtre para el lunes
from c in orders
group c by c.name into g
select new {
Name = g.Key,
Price = g.Where(c => (int)c.date.DayOfWeek == this._monday).Sum(c => c.Price)
}
contestado el 03 de mayo de 12 a las 20:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# .net linq linq-to-objects or haz tu propia pregunta.
porque quiero la suma de todos los elementos en la tabla. Ahora tengo 2 caballos en la mesa, pero solo uno se vende el lunes, por lo que la suma del caballo es solo 100. Si vendo ambos caballos el lunes, la suma será 170... - Sebastian Busek
ok, entonces, ¿qué pasa con el caballo de línea, 0? ¿por qué quieres eso? cual es la condicion para eso - Habib
el resultado que quieres es (caballo, 100, gato, 50 y PERRO, 0), ¿no? - Raphaël Althaus
Espera, pero dijiste que querías "caballo, 0" - scottheckel
actualizado; sí quiero (caballo, 100, gato, 50 y PERRO, 0). - Sebastian Busek