2009-05-06 6 views
1

Ich entwickle eine Anwendung auf der Basis von 4 Suchkriterien zu erfüllen suchen:Wie führt man eine Suche nach 4 grundlegenden Kriterien durch?

  • Schlüsselwort (Textbox)
  • Experience (Dropdownlist)
  • Lage (Textbox)
  • Funktionsbereich (Dropdownlist)

Es gibt kein Pflichtfeld, also wie man es durchführt?

+0

Können Sie Ihre Frage anders formulieren oder etwas präzisieren? Vielleicht haben Sie bereits einen Code geschrieben, können Sie ihn hier analysieren? – RuudKok

+0

Wo suchen Sie nach Daten? –

+0

Ich kann nicht sehen, was die Frage ist. –

Antwort

1

Wenn ich die Frage undertand ... wenn Sie den Zugriff auf LINQ haben, dann wird es einfach:

(IQueryable<T> mit IEnumerable<T> ersetzen, wenn Sie LINQ-to-Objects verwenden)

IQueryable<YourType> query = ctx.SomeObjects; 

if(!string.IsNullOrEmpty(name)) { 
    query = query.Where(x => x.Name == name); 
} 
if(activeOnly) { 
    query = query.Where(x => x.IsActive); 
} 
if(minDate != DateTime.MinValue) { 
    query = query.Where(x => x.Date >= minDate); 
} 
if(maxDate != DateTime.MinValue) { 
    query = query.Where(x => x.Date <= maxDate); 
} 
var results = query.ToList(); 

Wenn Sie mit Daten mit normalem ADO.NET kommunizieren, können Sie entweder die dynamische Abfragezusammensetzung verwenden oder Sie können einen SP (oder einen ähnlichen) aufrufen, der das gleiche intern ausführt (z. B.

StringBuilder sql = new StringBuilder(
    "SELECT * FROM [SOME_TABLE] WHERE 1=1"); 
if(!string.IsNullOrEmpty(name)) { 
    sql.Append(" AND [Name][email protected]"); 
} 
if(activeOnly) { 
    sql.Append(" AND IsActive = 1"); 
} 
if(minDate != DateTime.MinValue) { 
    sql.Append(" AND [Date]>[email protected]"); 
} 
if(maxDate != DateTime.MinValue) { 
    sql.Append(" AND [Date]<[email protected]"); 
} 
// create connection, create command, add parameters, use ExecuteReader etc 
)
Verwandte Themen