Linq: seleccione todos los elementos agrupados por nombre con recuento igual a 0

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? :)

preguntado el 03 de mayo de 12 a las 20:05

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... -

ok, entonces, ¿qué pasa con el caballo de línea, 0? ¿por qué quieres eso? cual es la condicion para eso -

el resultado que quieres es (caballo, 100, gato, 50 y PERRO, 0), ¿no? -

Espera, pero dijiste que querías "caballo, 0" -

actualizado; sí quiero (caballo, 100, gato, 50 y PERRO, 0). -

1 Respuestas

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 or haz tu propia pregunta.