2016-12-03 1 views
0

Hallo zur hilfreichen Gemeinschaft!Filter C# Entitätsliste

Jungs Ich habe ein Problem mit einem C# Entity/SQL Server 2014-Projekt, das mir harte Zeiten

Ich habe ein Verfahren mit diesem Ergebnis eingestellt

OnDate   RoomType Available RateCode Price 
2016-12-12  DBL   2   BAR  200 
2016-12-12  TRP   4   BAR  300 
2016-12-12  DBL   2   NEW  250 
2016-12-12  TRP   4   NEW  350 

In meinem C# Programm, das ich über eine Liste gibt das wird von diesem Verfahren durch das Entstehen von

gespeist. Um nicht eine andere Prozedur und eine andere LIST zu erstellen, gibt es eine Möglichkeit, je nach meinen Bedürfnissen mein List-Ergebnis in C# wie folgt zu transformieren?

OnDate   RoomType Available RateCode Price 
2016-12-12  DBL   2      0 
2016-12-12  TRP   4      0 

So ist es im Grunde das gleiche Ergebnis, aber deutlich mit dem RateCode leer ist und der Preis = 0

ich beiden Ergebnisse Sätze für meine Verarbeitung benötigen. Ich für Schleifen und bevölkern XMLs so, wenn ich nur Zimmertyp-Verfügbarkeit benötigen, wenn ich mit dem ersten Ergebnis stecke würde ich die gleichen Raumtypen wie viele tmes als RateCodes bekommen existieren, die

nicht akzeptabel ist
for (int Row = 0; Row < myList.Count(); Row++) 
{ 
    blah 
} 

Danke im Voraus !

+0

Warum sollte der Preis 0 sein? Wahrscheinlich sollte die Summe der 2 Zeilen sein? Auch sollten Sie wählen, was Ihr RateCode sein soll. – mybirthname

+0

Ich brauche es als 0, um die Distinct RoomTypes - Verfügbarkeit zu erhalten, die sich nicht ändert, welcher RateCode verwendet wird. – PanosPlat

+0

Sie können das mit GroupBy für Ihre Sammlung tun, ich werde Ihnen etwas schreiben, wie es geht. – mybirthname

Antwort

1

Dies wird Ihre gewünschte Liste zurückgeben. Sie gruppieren Ihre Sammlung nach RoomType und Available und danach Select die Daten, die Sie benötigen.

var result = myList.GroupBy(x => new { x.RoomType, x.Available }) 
        .Select(g => new Hotel { 
              OnDate = g.First().OnDate, 
              RoomType = g.Key.RoomType, 
              Available = g.Key.Available, 
              RateCode = "", 
              Price = 0 }) 
        .ToList(); 

Hier vollständiges Codebeispiel: dotNetFiddle

+0

ausgezeichnet. Vielen Dank – PanosPlat