2009-05-06 7 views
1

Je développe une application pour effectuer une recherche sur la base de 4 critères de recherche:Comment effectuer une recherche sur 4 critères de base?

  • mots-clés (zone de texte)
  • Expérience (dropdownlist)
  • Localisation (zone de texte)
  • zone fonctionnelle (dropdownlist

Il n'y a pas de champ obligatoire, alors comment l'effectuer?

+0

pourriez-vous reformuler votre question ou clarifier un peu? Peut-être avez-vous déjà écrit du code, pourriez-vous l'analyser ici? – RuudKok

+0

Où allez-vous chercher des données? –

+0

Je ne vois pas quelle est la question. –

Répondre

1

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 
Questions connexes