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
)
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
Wo suchen Sie nach Daten? –
Ich kann nicht sehen, was die Frage ist. –