La sintaxis de mi consulta es buena, pero no la salida y es realmente extraño.declaración groupby LINQ con la clave
I tienen la siguiente tabla:
| AppointID | UserID | AppointSet | AppointResolved | AppointStatus | AppointmentDatetime
| 1 | 1 | 3/1/2011 | 3/1/2011 | 1 | 3/15/2011
| 2 | 1 | 3/2/2011 | 3/5/2011 | 4 | 3/16/2011
| 3 | 1 | 3/2/2011 | 3/11/2011 | 2 | 3/11/2011
| 4 | 1 | 3/3/2011 | 3/7/2011 | 3 | 3/25/2011
ApponintStatus es un byte donde 1 es para el grupo, 2 es para asistieron, 3 es para reprogramada y 4 es para cancelados. AppointDatetime es la fecha para la cual se establece la cita.
Lo que intento hacer es crear la siguiente salida que cuente la actividad por día.
| Date | Set | Attended | Rescheduled | Cancelled |
| 3/1/2011 | 1 | | | |
| 3/2/2011 | 2 | | | |
| 3/3/2011 | 1 | | | |
| 3/5/2011 | | | | 1 |
| 3/7/2011 | | 1 | | |
| 3/11/2011 | | | 1 | |
Esto es lo que tengo hasta ahora. TheDate es una fecha dentro del mes que estoy preguntando por (es decir, pasar 4 de marzo y debe devolver la tabla de marzo)
var r = from appnt in MyDC.LeadsAppointments
where appnt.UserID == TheUserID
where (appnt.AppointResolved.Year == TheDate.Year && appnt.AppointResolved.Month == TheDate.Month) ||
(appnt.AppointSet.Year == TheDate.Year && appnt.AppointSet.Month == TheDate.Month)
group appnt by appnt.AppointResolved.Date into daygroups
select new ViewMonthlyActivityModel()
{
ViewDate = (from d in daygroups
select daygroups.Key.Date).First(), // Problem here: need to get dates for instances where an appointment is set but none are resolved
CountTotalSetOnDay = (from c in daygroups
where c.AppointSet.Date == daygroups.Key // Problem here
select c.AppointID).Count(),
CountAttendedOnDay = (from c in daygroups
where c.AppointResolved.Date == daygroups.Key.Date
where c.AppointStatus == 2
select c.AppointID).Count(),
Uno de los problemas es que CountTotalSetOnDay está regresando sólo el recuento de las que se especifican y resuelto el mismo día; el otro problema es que ViewDate necesita devolver todas las fechas: hay fechas en las que no hay citas programadas, pero se atienden citas, reprogramadas o canceladas, y viceversa, hay fechas en las que se establecen citas pero ninguna se resuelve.
Por ahora estoy ejecutando esto con 2 consultas y uniendo los resultados: una consulta devuelve las citas establecidas y la otra devuelve las citas resueltas. Sin embargo, todavía estoy atrapado en la solución con una consulta en una sola lectura.
¿Alguna sugerencia?
Gracias.
Sí, ese es el problema en el que estoy atascado. Y, también habrá casos en los que haya una fecha para la cual haya una cita establecida pero no se haya resuelto ninguna cita. – frenchie
Esto es confuso; ¿A dónde va este var appointmentTaken? – frenchie
Es solo un ejemplo para mostrarle cómo obtener la columna 'Establecer' de las entradas de su tabla. Si hace lo mismo para cada fecha y cada campo requerido en su tabla de resultados, debe tener toda la información que necesita para cumplir su objetivo. – tugudum