2009-04-28 3 views
1

Ich habe Formular mit benutzerdefinierten Filtern (Combobox mit Spaltennamen, Combobox mit Filtertypen und Textbox mit Wert).Benutzerdefinierter Filter für linq

Wie kann ich einen benutzerdefinierten Filter dynamisch in die LINQ-Abfrage einfügen?

Typische Abfrage wie folgt aussieht:

var qProducts = from p in db.Products 
    where p.IsArchived == false 
    order by p.ProductName select p; 

Ich bin mit LINQ (IQuerable Toolkit) für den Zugriff auf Daten in SQL CE-Datenbank.

+0

Dies könnte helfen: http: //social.msdn .microsoft.com/Forums/de-US/linqprojectgeneral/thread/5edb3dd0-c778-47e2-b89d-a9c90a0bd1bc –

Antwort

3

Vielleicht möchten Sie Dynamic LINQ von der VS2008 Samples betrachten. Dann könnten Sie so etwas wie:

var qProducts = db.Products 
        .Where("IsArchived = {0}", archiveFilterValue) 
        .OrderBy(sortColumn + " " + sortDirection); 
+0

+1, es sieht gut aus. Ich werde es versuchen. – TcKs

-1

Sie jeden Filter dynamisch hinzufügen kann, wenn es benötigt wird, zum Beispiel:

if (txtFilter1.Text!="") qProducts=qProducts.Where(s=>s.Name==txtFilter1.Text); 
if (txtFilter2.Text!="") qProducts=qProducts.Where(s=>s.Field==txtFilter2.Text); 
if (cboCombo1.SelectedValue!=0) qProducts=qProducts.Where(s=>s.price... 

und so weiter

+3

Ich möchte es dynamisch mit Wiederverwendung auf jedem filterbaren Tisch tun. "If" für jede Spalte in der Datenbank schreiben ist nicht praktisch. – TcKs