Archiv

Archive for April 2011

LINQ: eine Liste anhand einer anderen Liste sortieren

30. April 2011 Kommentare aus

Ich hatte vor kurzem eine „kleine“ Herausforderung zu lösen: Als Input hatte ich eine Liste A mit Primärschlüsseln und ich sollte eine Liste B mit den dazugehörigen Objekten zurückliefern – aber in der gleichen für mich nicht nachvollziehbaren Reihenfolge wie ihre Id in Liste A erscheinen.

Die Aufgabe wäre nicht der Rede wert wenn man nach einem bestimmten Feld sortieren könnte. In dem Fall gäbe es genügend Möglichkeiten um ein Order By in LINQ oder schon in SQL durchzuführen.

 
Ein JOIN als Lösung
Auf Stackoverflow fand ich eine Antwort von Simon D die mir den Weg zeigte. Ein einfacher JOIN in LINQ löst das Problem auf eine sehr elegante Weise:

var orderedByIDList = from i in ids 
                       join o in objectsWithIDs
                       on i equals o.ID
                       select o;

 
Ein Beispiel
Um die Lösung in Aktion zu sehen habe ich diesen kleinen Code-Schnipsel zusammengestellt. Eine Liste von Personen soll nach ihren Id’s sortiert werden, so wie sie in der Liste filter festgelegt wurden. Um Daten nicht aus einer DB holen zu müssen dient die Methode GetSampleData() als Datengenerator.

void Main()
{
        List<long> filter = new List<long>(){1,3,2};
        List<Person> result = Person.GetSampleData();
        result.Dump();
        
        var orderedResult = from f in filter join r in result on f equals r.Id select r;
        orderedResult.Dump();        
}

public class Person 
{
        public long Id;
        public string LastName;
        public string FirstName;
        
        public static List<Person> GetSampleData()
        {
                List<Person> data = new List<Person>(){
                        new Person(){Id = 1, LastName = "Vettel", FirstName = "Sebastian"},
                        new Person(){Id = 2, LastName = "Massa", FirstName = "Felipe"},
                        new Person(){Id = 3, LastName = "Hamilton", FirstName = "Lewis"},
                };
                
                return data;
        }
}

Gibt man dieses Beispiel in LINQPad als “C# Program” (bei Language) ein, wird die Liste bei der 2. Ausgabe entsprechend verändert:

 
Fazit
Man sollte auch kleine Probleme nutzen um sein Wissen auszubauen. LINQ bietet einem die Möglichkeit erstaunliche Ansätze zu einer Lösung zu kombinieren und Probleme aus einem ganz anderen Blickwinkel anzugehen. Und Stackoverflow ist ein idealer Anlaufort für solche Probleme.

Schlagworte: ,

Buch-Rezension zu “Building Enterprise Applications with WPF and the MVVM Pattern”

25. April 2011 3 Kommentare

Building Enterprise Applications with Windows Presentation Foundation and the Model View ViewModel Pattern” von Raffaele Garofolo erschien im März 2011 bei Microsoft Press. Das MVVM Pattern ist für Silverlight und WPF Anwendungen schon fast ein Muss. Für den geringen Betrag von 15$ bekommt man ein gutes Buch zu MVVM.

 

Das Buch startet wie zu erwarten mit einer Einführung ins Model View ViewModel Pattern und dessen Abgrenzung gegenüber den sonstigen UI Patterns wie MVC oder MVP. Mit diesen Grundlagen ist man gerüstet um die einzelnen Schichten einer Anwendung anzuschauen. Vom Domänenmodell geht es über den Data Access Layer durch die Geschäftslogik zur Oberfläche der Anwendung.

Als Abschluss bietet das Buch eine kurze Übersicht zu MVVM Frameworks und Toolkits wie Caliburn, Prism, MVVM Light Toolkit oder Cinch.

Am Ende jedes Kapitels findet man ein grösseres Beispiel in dem die gerade beschriebenen Punkte zu einem realistischen Szenario verbunden werden. Dies sollte man unbedingt anschauen, da der Text im Kapitel selber wohl nicht jedem genügen wird.

 
Klein, aber fein?
Das Buch ist mit nur 224 Seiten recht dünn, behandelt aber dennoch eine grosse Anzahl von Themen. So kann vieles nur angeschnitten werden, für eine Vertiefung fehlt es an Platz. Wer hier eine detaillierte Einführung in Caliburn erwartet muss zwangsläufig enttäuscht werden.

Es gibt aber Themen wie das Repository- oder das Unit of Work Pattern, die mit ausreichendem Tiefgang beschreiben werden. Der Mehrwert dieses Buches liegt für mich beim kombinieren der einzelnen Themen und Ansätze zu einem Gesamtbild.

Im Grossen und Ganzen hätte der Verzicht aufs eine oder andere Toolkit oder Framework dem Buch wohl mehr Profil gegeben. Jetzt wird zwar jeder angesprochen, doch wer eine Empfehlung für ein spezifisches Produkt sucht wird enttäuscht.

 
Test-Driven
Garofolo legt sehr viel Wert auf die Testbarkeit der vorgestellten Ansätze. So findet man neben einer minimalen Einführung in Test Driven Development über das ganze Buch verteilt immer wiederkehrende Beispiele wie man in dieser Situation nun genau den Code testen kann. Diese Hilfestellung fand ich sehr gut und ich wünschte mir, dass mehr Autoren so viel Wert auf die Testbarkeit legen würden.

 
Downloads
Beim Link zu den Code-Beispielen gab es scheinbar einige Probleme. Der Source Code finden sich auf http://examples.oreilly.com/9780735650923-files/9780735650923_files.zip. Man könnte für die Zukunft noch die ReSharper-Dateien und Binaries weglassen, wodurch das Zip deutlich kleiner würde.

 
Fazit
Wer eine kurze und günstige Einführung ins MVVM Pattern sucht wird in diesem Buch das gewünschte finden. Man muss sich aber mit WPF oder Silverlight auskennen, denn dies ist keine Einführung in diese Technologien.

 
Zum Buch
Building Enterprise Applications with Windows Presentation Foundation and the Model View ViewModel Pattern” von Raffaele Garofolo, 2011 Microsoft Press, ISBN Print 978-0-7356-5092-3, ISBN E-Book 978-0-7356-4982-8, 224 Seiten, Englisch

Schlagworte: , , ,

.NET User Group Bern – immer ein Besuch wert

11. April 2011 1 Kommentar

Ich möchte diesen Blogpost nutzen um ein wenig Werbung für die .NET User Group Bern zu machen.

Seit Ende März 2010 macht die DNUG Bern im Schnitt alle 2 Monate ein Treffen, bei dem die verschiedensten Themen rund um .Net vorgestellt werden. Diese reichten bisher von ASP.net MVC über BDD, O/R Mapper, TFS, SOLID bis zu T4 Templates. Organisiert wird das Ganze von Martin Affolter, Kay Herzam und René Leupold.

 
Nächste Treffen
Im April gibt es für einmal 2 Treffen:

Wer an den Themen interessiert ist sollte sich bei der XING-Gruppe registrieren und für den Event anmelden. Dies erleichtert die Planung, da die Plätze durch die Raumgrösse limitiert sind.

Die Vorträge finden wiederum bei WISS Bern (Ostermundigenstrasse 81, 3006 Bern) statt.

 
Community Feed
Um die Zeit zwischen den Treffen zu überbrücken empfiehlt sich der Community Feed. Dieser findet sich auf http://www.dnug-bern.ch/rss.aspx und aggregiert die Blogs einiger Mitglieder der DNUG Bern.

Den Feed darf man übrigens auch abonnieren wenn man nicht an die Treffen kommen kann oder will. ;-)

Schlagworte: ,

Buch-Rezension zu “Programming WCF Services (3rd Edition)”

10. April 2011 5 Kommentare

Programming WCF Services” von Juval Löwy erschien im August 2010 bei O’Reilly in der 3. Ausgabe. Gegenüber der Vorgängerversion sind die Neuerungen von .Net 4 zu WCF (Windows Communication Framework) aufgenommen worden. Ich kaufte mir die PDF-Version als Vorbereitung für die WCF-Zertifizierung 70-513, da das Buch überall als sehr gutes Lehrmittel angepriesen wird.

 
Detaillierte Informationen
Das Buch liefert sehr detaillierte Informationen zu den einzelnen Aspekten von WCF. Nach einem Einführungskapitel geht es an all die Teile die WCF ausmachen. Sucht man etwas zu Endpoints, Data Contracts oder Transaktionen – man wird es hier finden.

Sehr hilfreich fand ich die Vergleichstabellen, bei denen man auf einen Blick die Unterschiede zwischen den einzelnen Optionen sehen kann. Im praktischen Einsatz kann man so ohne viel Aufwand die zum Problem passende Variante auswählen.

 
Nichts für Anfänger
Wer erst dabei ist sich ins Thema WCF einzuarbeiten wird das Buch relativ schnell weglegen. Auch wenn das erwähnte Einführungskapitel an die 80 Seiten hat, so kennt man am Ende zwar viele Details aber das Gesamtbild bleibt verschwommen.

Es gibt zwar unzählige Code-Snippets, aber kein zusammenhängendes Beispiel das einem zeigt wie die Einzelteile zusammen hängen. Und ohne diesen Zusammenhang wird es sehr schwer sich in WCF zu Recht zu finden.

 
PDF: Da ginge mehr
O’Reilly verzichtet bei ihren PDF auf ein DRM und die damit verbundenen (unnötigen) Einschränkungen. Man kann das PDF ausdrucken und auch Textpassagen kopieren.

Bei den Bildern hätte O’Reilly aber deutlich mehr bieten können. Anscheinend ist das Problem mit den teils fehlenden Bildern auf dem IPad bekannt und beschränkt sich nicht nur auf dieses Buch. Schaut man sich das PDF auf dem PC an, sind die Grafiken verschwommen und man sieht das durch die Komprimierung hervorgerufene Ringing sehr deutlich.

 
Fazit
Als Anfänger sollte man sich nach einem anderen Buch zu WCF umschauen. Hat man einmal die Grundlagen verstanden und findet sich in WCF zurecht, sollte man dieses Buch wieder hervorholen. Die darin vermittelten Details sind sehr gut und helfen beim lösen der teils komplexen Problemen die im Umfeld von WCF auftauchen können. Man sollte aber unbedingt die gedruckte Ausgabe kaufen, das PDF in der aktuellen Form enttäuscht.

 
Zum Buch
Programming WCF Services (3rd Edition)” von Juval Löwy, 2010 O’Reilly, ISBN (PDF) 978-1-4493-9445-5, ISBN (Print) 978-0-596-80548-7, 912 Seiten, Englisch

Schlagworte:
Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 295 Followern an