[DEV][Win8] Umgang mit Listen von Elementen über LINQ (z.B. für die Suche)

Hier der nächste Beitrag meiner Blogserie: Blogserie- Mein Leben mit XAML

Grade bei der Entwicklung von Windows 8 Store Apps stößt man oft auf Listen von Elementen - ob es jetzt klassisch List<T> oder ObservableCollection<T> oder … ist, spielt dabei erstmal keine Rolle.

Und wenn man sich an das typische Vorgehen hält, so kommt es grade auch bei der Implementierung der Suche darauf an, dass man solche Listen schnell filtert und mit dem gewünschten Ergebnis an die Controls übergeben kann.

Hier ein einfaches Beispiel:

 var mylist = andereListe.Where(item => item.Description.Contains(searchQuery));

 

Ich habe eigentlich kein konkretes Beispiel im Netz gefunden um mehrere Queries zu kombinieren, daher hier nur kurz: wer nicht nur ein Property, sondern mehrere in die Filterung mit einbeziehen möchte, der kann dies selbstverständlich in der gleichen Abfrage erledigen, der Trick ist dabei auf die Klammersetzung zu achten, bzw. diese zu verwenden, denn es wird “einfach” nur auf einen Boolschen Ausdruck gesetzt, den ich über () gut erweitern kann:

 var mylist = andereListe.Where(item =>(
                                         item.Description.Contains(searchQuery) ||
                                         item.Title.Contains(searchQuery)
                                       ));

Natürlich kann dies auch anders gelöst werden:

 var foundItems = from item in myList
                 where 
                     item.Title.Contains(querystring) || 
                     item.Description.Contains(querystring)
                 select item;

Über diesen Weg ist es sehr schnell möglich eine Suche zu einem Windows 8 App hinzuzufügen, einfach einen neuen SearchContract dem Projekt hinzufügen und dem DefaultViewModel[“Results”] zuweisen:

image

 

Klingt einfach – ist es auch!

 

Bis zum nächsten Post

 

Stephanus