Ich habe eine einfache SQL-Abfrage:Zählen Aufzeichnungen in C# LINQ mit
Select ID, COUNT(ID) as Selections, OptionName, SUM(Units) as Units
FROM tbl_Results
GROUP BY ID, OptionName
Die Ergebnisse I Were bekam:
'1' '4' 'Approved' '40'
'2' '1' 'Rejected' '19'
'3' '2' 'Not Decided' '12'
ich die Daten in der Datenbank zu verschlüsseln, und als solche Uhr nicht in der Lage, die Daten in relationaler Form zu summieren. Um das zu umgehen, entschlüssle ich die Daten in der Anwendungsschicht und möchte sie dort mit LINQ abfragen. Ich brauche die folgenden Ergebnisse:
'1' 'Approved' '10'
'3' 'Not Deceided' '6'
'2' 'Rejected' '19'
'1' 'Approved' '15'
'1' 'Approved' '5'
'3' 'Not Deceided' '6'
'1' 'Approved' '10'
ich diese Ergebnisse in der Klasse setzen und eine stark typisierte Liste erstellen:
public class results
{
public int ID {get;set;}
public string OptionName {get;set;}
public int Unit {get;set;}
}
ich fast die LINQ-Abfrage habe über die Ergebnisse wie die SQL-Abfrage zu bringen:
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()};
Wie stelle ich sicher, dass meine LINQ-Abfrage auch geben Sie mir die Option Name
?
Wenn ich eine Klasse namens Statistics
erstellt habe, um meine Ergebnisse zu speichern, wie würde ich die LINQ-Abfrage ändern, um mir List<Statistics>
Ergebnismenge zu geben? so
public class results
{
public int ID {get;set;}
public int NumberOfSelections { get; set; }
public string OptionName {get;set;}
public int UnitTotal {get;set;}
}
Ich bin froh, dass ich zu lange gebraucht habe, um zu antworten. Ich wollte etwas wie "Gruppenergebnis nach Ergebnis.ID" vorschlagen und dann "OptionsName = g.Select (result => result.OptionName) .First()". Was wahrscheinlich zu viel wäre. –