2009-06-03 10 views
3

J'ai une déclaration LINQ que je veux ajouter un montant supplémentaire de clause where si un menu déroulant index n'est pas 0.Conditionnel LINQ où instruction?

people.Where(n.surname == "surname" || n.forename == "forename" && (dropdown.SelectedIndex > 0) ? n.id = dropdown.SelectedValue : n.id > 0).Select(n => n); 

Je ne suis même pas sûr si ce que je suis en train est possible ??

Je voudrais faire cela plutôt que d'avoir à écrire deux déclarations différentes.

Des idées?

Merci

Répondre

11

Heureusement, cela est facile, car les requêtes composent:

var query = people.Where(n.surname == "surname" || n.forename == "forename"); 
if (dropdown.SelectedIndex > 0) 
{ 
    query = query.Where(n => n.id.ToString() == dropdown.SelectedValue); 
} 
+0

On dirait id est un entier, mais la propriété SelectedValue est une chaîne. L'un ou l'autre devra être converti. – tvanfosson

+0

obtenir une erreur "ne peut pas être déduit de l'erreur d'utilisation dans mon l'instruction if requête = requête –

+0

J'ai besoin de paramètre dans le où requête = query.Where (n => n.id == dropdown.SelectedValue); Merci les gars –