¿Es posible hacer un grupo LINQ por y meses de grupo en cuartos, Es decir, Q1 enero a abril, etc, etcLINQ grupo meses por trimestres
Respuesta
Algo como esto
Enumerable.Range(1,12)
.Select(o => new DateTime(DateTime.Today.Year, o, 1))
.GroupBy(o => (o.Month - 1)/3)
Sí que se puede lograr con el LINQ a la función de SQL GroupBy si se define el qouters en algún lugar de su base de datos o puede escribir algún código que manejará esta acción, todo depende de los datos disponibles para esta evaluación.
se puede dividir una lista arbitraria en partes utilizando una sobrecarga del método Seleccionar y GroupBy. En su caso, suponiendo que los meses en la lista están en el orden correcto, el siguiente debería funcionar:
var groups = yourList
.Select((item, index) => new { item, index })
.GroupBy(indexedItem=>indexedItem.index/3);
buen ejemplo, pero ¿y si sus meses no están en orden cronológico –
@COLDTOLD: entonces la respuesta de liho1eye o de usted sería mejor: D puede – saus
Aquí hay un ejemplo básico que demuestra esto:
var dates = new[]
{
new DateTime(2011, 12, 25),
new DateTime(2011, 11, 25),
new DateTime(2011, 5, 4),
new DateTime(2011, 1, 3),
new DateTime(2011, 8, 9),
new DateTime(2011, 2, 14),
new DateTime(2011, 7, 4),
new DateTime(2011, 11, 11)
};
var groupedByQuarter = from date in dates
group date by (date.Month - 1)/3
into groupedDates
orderby groupedDates.Key
select groupedDates;
foreach(var quarter in groupedByQuarter)
{
Console.WriteLine("Q: {0}, Dates: {1}", quarter.Key, string.Join(", ", quarter));
}
El orden de está ahí para ayudar simplemente los cuartos deben ordenarse lógicamente Puede eliminar la cláusula completa siguiendo la declaración del grupo.
Con la salida de:
Q: 0, Dates: 1/3/2011 12:00:00 AM, 2/14/2011 12:00:00 AM
Q: 1, Dates: 5/4/2011 12:00:00 AM
Q: 2, Dates: 8/9/2011 12:00:00 AM, 7/4/2011 12:00:00 AM
Q: 3, Dates: 12/25/2011 12:00:00 AM, 11/25/2011 12:00:00 AM, 11/11/2011 12:00:00 AM
Obviamente que se necesitan para corregir los números trimestre mediante la adición de uno o tal vez traducirlos a otro enumeración correspondiente.
- 1. grupo LINQ por la pregunta meses
- 2. Linq: grupo por año y mes, y administrar meses vacíos
- 3. grupo LINQ por, ordenado por
- 4. Grupo por rango de fechas en semanas/meses de intervalo
- 5. Últimos 12 meses, grupo a semana
- 6. NHibernate LINQ grupo por grupo no correctamente en SQL Server
- 7. Número de grupo en un grupo LINQ por consulta
- 8. SQL para LINQ dificultad - grupo por, tener
- 9. grupo LINQ por la sintaxis de expresión
- 10. Grupo LINQ Por campos múltiples -Sintaxis ayudar
- 11. LINQ Grupo condicional
- 12. aplanamiento LINQ Grupo consulta
- 13. Distintos meses-año con Linq (a entidades)
- 14. Linq ordenar, agrupar por orden y por cada grupo?
- 15. Grupo varias tablas en LINQ
- 16. Grupo A, Sum en LINQ
- 17. .NET LINQ al grupo de entidades por fecha (día)
- 18. Linq obtener suma de grupo de datos por fecha
- 19. ¿Cómo combinar/sumar registros por grupo usando LINQ?
- 20. ¿Cómo creo un grupo anidado por diccionario usando LINQ?
- 21. LINQ A GRUPO SQL por tener generada sólo como subconsulta
- 22. Agregado de LINQ y grupo por períodos de tiempo
- 23. Linq con grupo al contar
- 24. Grupo LINQ para ordenar grupos del resultado
- 25. grupo múltiple de y Suma LINQ
- 26. LINQ - tipos de clases específicos de grupo
- 27. LINQ a SQL .sum() sin grupo ... en
- 28. Linq - el valor superior de cada grupo
- 29. SQL para Entity Framework Count Grupo-Por
- 30. SQL Resultados grupo por mes
¡Bien, me alegro de que puedas usar magia entera para hacer una solución para esto! – Jackstine