He sido programador desde hace algunos años pero soy
recién llegado a LINQ y C# así que discúlpeme si mi pregunta suena
particularmente estúpido.¿Cómo puedo crear una consulta LINQ dinámica en C# con posibles cláusulas de múltiples grupos por?
Espero que alguien pueda señalarme en la dirección
correcta. Mi tarea es crear la capacidad de formar un grupo múltiple dinámico
mediante la consulta linq dentro de un script C# usando
una lista genérica como fuente.
Por ejemplo, decir que tengo una lista que contiene varios elementos, con el siguiente
estructura:
FieldChar1 - character
FieldChar2 - character
FieldChar3 - character
FieldNum1 - numeric
FieldNum2 - numeric
En pocas palabras quiero ser capaz de crear una consulta LINQ que
se suma FieldNum1 y FieldNum2 agrupados por cualquiera, dos o
los tres campos de FieldChar que se decidirán en
tiempo de ejecución dependiendo de los requisitos de los usuarios, así como de seleccionar los campos de FieldChar en la misma consulta.
Tengo los dynamic.cs en mi proyecto que incluye un método de extensión GroupByMany, pero tengo que admitir que no estoy seguro de cómo usarlos. Puedo obtener los resultados deseados si utilizo una consulta con un grupo cableado por solicitudes pero no de forma dinámica.
Disculpas por cualquier nomenclatura errónea, soy nuevo en este lenguaje, pero cualquier consejo sería bienvenido.
Muchas gracias
Alex
Muchas gracias por su respuesta. Lo aprecio y me da algo nuevo para mirar. Pero es posible obtener su ejemplo de ... var groups = people.GroupBy (p => new {p.Age, p.Sex}); en una línea de código donde la cláusula group by (p.Age, p.Sex) puede ser sustituida por una cadena variable creada previamente que podría ser cualquier combinación de edad y/o sexo. Vengo de un fondo de FoxPro/SQL donde puedes construir dinámicamente tu consulta usando la concatenación de cadenas. De nuevo, aprecio tu ayuda. – FordPrefect141
@ FordPerfect141 - Con LINQ, no puede simplemente concatenar cadenas, porque LINQ necesita ser fuertemente tipado. Puede lograr algo similar creando dinámicamente dicha expresión. – Venemo
Ah-ha. Entonces, en su ejemplo, si el usuario deseaba agruparse a veces por sexo y edad, y algunas veces solo por edad, ¿cómo lo haría sin tener que codificar realmente la cláusula group by? Me disculpo nuevamente, esto es nuevo para mí. Muchas gracias de nuevo. – FordPrefect141