tengo un simple consulta SQL:Recuento de registros en C# utilizando LINQ
Select ID, COUNT(ID) as Selections, OptionName, SUM(Units) as Units
FROM tbl_Results
GROUP BY ID, OptionName
Los resultados que obtuve eran:
'1' '4' 'Approved' '40'
'2' '1' 'Rejected' '19'
'3' '2' 'Not Decided' '12'
tengo para cifrar los datos en la base de datos, y como tal la mañana incapaz de sumar los datos en forma relacional. Para evitar esto, desencripto los datos en la capa de aplicación y quiero usar LINQ para consultarlo allí. Necesito los siguientes resultados:
'1' 'Approved' '10'
'3' 'Not Deceided' '6'
'2' 'Rejected' '19'
'1' 'Approved' '15'
'1' 'Approved' '5'
'3' 'Not Deceided' '6'
'1' 'Approved' '10'
pongo estos resultados en clase y crear una lista inflexible:
public class results
{
public int ID {get;set;}
public string OptionName {get;set;}
public int Unit {get;set;}
}
casi tengo la consulta LINQ para traer de vuelta los resultados como la consulta SQL sobre:
var q = from r in Results
group p.Unit by p.ID
int g
select new {ID = g.Key,
Selections = g.Count(),
Units = g.Sum()};
¿Cómo puedo garantizar que mi consulta LINQ también me proporcione el Option Name
?
Si creé una clase llamada Statistics
para contener mis resultados, ¿cómo modificaría la consulta LINQ para darme el resultado List<Statistics>
?
public class results
{
public int ID {get;set;}
public int NumberOfSelections { get; set; }
public string OptionName {get;set;}
public int UnitTotal {get;set;}
}
Me alegro de haber tardado demasiado en responder. Iba a sugerir algo como "resultado de grupo por result.ID" y luego "OptionName = g.Select (result => result.OptionName) .First()". Lo cual probablemente sería demasiado. –