Si j'undertand la question ... si vous avez accès à LINQ, il devient alors simple:
(Replace IQueryable<T>
avec IEnumerable<T>
si vous utilisez LINQ-à-objets)
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();
Si vous parlez à un datawith avec ADO.NET standard, vous pouvez utiliser une composition de requête dynamique, ou vous pouvez appeler un SP (ou similaire) qui fait la même chose en interne - par exemple (du premier):
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
pourriez-vous reformuler votre question ou clarifier un peu? Peut-être avez-vous déjà écrit du code, pourriez-vous l'analyser ici? – RuudKok
Où allez-vous chercher des données? –
Je ne vois pas quelle est la question. –