Dynamic LINQ



Martin Hey
Communardo Software GmbH
21.07.2010
LINQ To Objects – was ist das?

 im .NET-Framework integrierte Abfragesprache
 erlaubt typsichere Abfragen
 SQL-ähnliche Syntax
 Beispiele:




     Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
 2   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
LINQ To Objects – was ist das?

 wird bereits zur Entwurfszeit auf Korrektheit geprüft
 erlaubt typsichere Abfragen auch über komplexe
  Objektstrukturen, z.B. durch Aggregierung,
  Projektion, Joins, Berechnungen etc.




     Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
 3   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
LINQ To Objects – was ist das?

 wird über Extension-Methods realisiert




     Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
 4   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
Warum dynamisch?

 Use-Case: Die Anwender sollen selbst im User-
  Interface definieren können, nach welchen Attributen
  die anzuzeigenden Objekte gefiltert und sortiert
  werden sollen.

 eines der großen Pro‘s von LINQ wird zum
  „Verhängnis“ – die Typsicherheit




     Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
 5   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
Dynamisch… aber wie?

 LINQ Queries sind aufgebaut als sog. Expression-
  Tree
 visualisierbar z.B. mit Expression Tree Viewer
  (http://sourceforge.net/projects/exprview/)




     Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
 6   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
Was ist zu tun?

 Liste von Objekten vom Typ
  „Restaurant“
 dynamische Filterung und Sortierung der
  Daten nach vom Anwender gewählten
  Kriterien



        dynamischer Aufbau des ExpressionTrees
        ggf. per Reflection mögliche Kriterien ermitteln
 Visualisierung der Ergebnisse in einem
  Grid
     Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
 7   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
Demo




                               jetzt wird programmiert   




    Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
8   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
Was gibt‘s noch?

 LINQ Dynamic Query Library
  http://weblogs.asp.net/scottgu/archive/2008/01/07/d
  ynamic-linq-part-1-using-the-linq-dynamic-query-
  library.aspx




     Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
 9   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
Vielen Dank
                                                                               für Eure
                                                                              Aufmerk-
                                                                               samkeit.




     Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
10   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
Nächste Termine

 25.08.2010
        Einführung in die Windows Phone 7 Entwicklung (Martin Hey)
        ggf. Buildmanagement, Branching- und Merging-Strategien mit dem
         TFS (Robert Mühsig)


 22.09.2010
        ASP.NET MVC Deep Dive (Albert Weinert)




     Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany
11   info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0

Dynamic linq

  • 1.
    Dynamic LINQ Martin Hey CommunardoSoftware GmbH 21.07.2010
  • 2.
    LINQ To Objects– was ist das?  im .NET-Framework integrierte Abfragesprache  erlaubt typsichere Abfragen  SQL-ähnliche Syntax  Beispiele: Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 2 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
  • 3.
    LINQ To Objects– was ist das?  wird bereits zur Entwurfszeit auf Korrektheit geprüft  erlaubt typsichere Abfragen auch über komplexe Objektstrukturen, z.B. durch Aggregierung, Projektion, Joins, Berechnungen etc. Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 3 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
  • 4.
    LINQ To Objects– was ist das?  wird über Extension-Methods realisiert Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 4 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
  • 5.
    Warum dynamisch?  Use-Case:Die Anwender sollen selbst im User- Interface definieren können, nach welchen Attributen die anzuzeigenden Objekte gefiltert und sortiert werden sollen.  eines der großen Pro‘s von LINQ wird zum „Verhängnis“ – die Typsicherheit Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 5 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
  • 6.
    Dynamisch… aber wie? LINQ Queries sind aufgebaut als sog. Expression- Tree  visualisierbar z.B. mit Expression Tree Viewer (http://sourceforge.net/projects/exprview/) Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 6 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
  • 7.
    Was ist zutun?  Liste von Objekten vom Typ „Restaurant“  dynamische Filterung und Sortierung der Daten nach vom Anwender gewählten Kriterien  dynamischer Aufbau des ExpressionTrees  ggf. per Reflection mögliche Kriterien ermitteln  Visualisierung der Ergebnisse in einem Grid Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 7 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
  • 8.
    Demo  jetzt wird programmiert    Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 8 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
  • 9.
    Was gibt‘s noch? LINQ Dynamic Query Library http://weblogs.asp.net/scottgu/archive/2008/01/07/d ynamic-linq-part-1-using-the-linq-dynamic-query- library.aspx Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 9 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
  • 10.
    Vielen Dank für Eure Aufmerk- samkeit. Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 10 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0
  • 11.
    Nächste Termine  25.08.2010  Einführung in die Windows Phone 7 Entwicklung (Martin Hey)  ggf. Buildmanagement, Branching- und Merging-Strategien mit dem TFS (Robert Mühsig)  22.09.2010  ASP.NET MVC Deep Dive (Albert Weinert) Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany 11 info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0