2016-06-27 8 views
0

Ich habe die folgenden Daten in einer SQL Server-Datenbank:effizienteste Weg, um Gruppe SQL Server-Ergebnisse in leicht parsable Ergebnis gesetzt

service_id delivery_id price_increase 
---------- ----------- -------------- 
    1    1   0.4 
    1    2   0.3 
    1    3   0.2 
    1    4   0.1 
    1    5    0 
    2    1   0.4 
    2    2   0.3 
    2    3   0.2 
    2    4    0 
    2    5    0 
    4    1   0.5 
    4    2   0.3 
    4    3   0.25 
    4    4   0.15 
    4    5    0 

Einige Punkte:

  • alle service_id Werte werden immer haben eine volle Ergänzung von delivery_id Werte (dh, es gibt eine Anforderung zu haben delivery_id s 1-5)
  • dort muss nicht af sein ull Komplement service_id Werte (wie Sie oben sehen können, service_id 3 keinen Eintrag hat)
  • für die Zwecke dieser Frage, gibt es keine Begrenzung für die Anzahl der service_id Einträge

Diese Werte werden in die analysiert werden folgende Klassenhierarchie:

ServicePricing 
- ServiceId 
- IEnumerable<DeliveryPricing> 

wo

DeliveryPricing 
- DeliveryId 
- PriceIncrease 

Wie kann man diese Werte am einfachsten aus der DB abfragen und dann mit C# analysieren? I könnte es in einer ziemlich trivialen, aber langweiligen Art und Weise tun, überprüfen, ob eine service_id bereits im Code usw. deklariert wurde, aber gibt es eine Möglichkeit, die Ergebnisse zu gruppieren, so dass ich sie leichter durchlaufen und haben kann eine klare Grenze, um eine neue Instanz einer der Klassen zu deklarieren?

Zum Beispiel ist es möglich, alle Ergebnisse aus service_id in eine individuelle Ergebnismenge zu setzen?

[Nur zur Klarstellung, ich bin für einen SQL-basierten Vorschlag suche, nicht, wie ein Ergebnis in C# gesetzt zu analysieren.]

+0

Sind Sie mit Entity Framework? –

+0

Möchten Sie eine Ergebnismenge für jede andere service_id? oder was ist deine Frage? – GuidoG

+0

@ChrisPickford - Nein, ich benutze keine EF. Das hätte die Dinge sehr einfach gemacht, aber wie gesagt, ich muss diese Ergebnisse analysieren. – awj

Antwort

0
select service_id, delivery_id, price_increase 
from table order by service_id, delivery_id 

int? serviceID = null; 
ServicePricing sp; 
List<ServicePricing> sps; 
while (rdr.Read()) 
{ 
    if(rdr.GetInt(0) <> serviceID) 
    { 
     if(sp != null) 
     sps.Add(sp); 
     serviceID = rdr.GetInt(0); 
     sp = new ServicePricing(serviceID); 
    } 
    sp.DeliveryPricings.Add(new DeliveryPricing(rdr.GetInt(1), rdr.GetDecimal(2)); 
} 
sps.Add(sp); 
+0

Danke @Paparazzi, aber ich habe gesagt, dass ich sagte "Ich bin auf der Suche nach einem SQL-basierten Vorschlag, nicht wie ein Ergebnis in C# zu parsen". – awj

+0

@awj, Gern geschehen. Es heißt Sortierung. – Paparazzi

Verwandte Themen