2010-08-13 6 views
0

je le code suivant qui tire sur une liste d'éléments utilisés dans une zone de texte rallonge de saisie semi-automatique:Ne comptez pas les articles de la méthode de saisie semi-automatique

return autocomplete.tblAutoCompletes 
      .Where(p => p.MemberId == memberid && p.LocationId == locationid && p.ACItem.Contains(prefixText)) 
      .OrderBy(p => p.ACItem) 
      .Select(p => p.ACItem) 
      .Take(count) 
      .ToArray(); 

Où memberid et LocationID sont des séances.

Dans cette liste d'éléments, j'en ai certains que je souhaite exclure selon les préférences de l'utilisateur. Cette préférence est également stockée en tant que session.

Ainsi, par exemple, j'ai le tableau suivant:

ACItem ACColumn 
aa Product 
ab Product 
ac Product 
ad Status 
ae Status 
af Status 
ag Category 
ai Category 
aj Category 

Le si je tapais dans « un » dans ma zone de texte, tous les produits ACItems seraient affichés.

Cependant, il peut y avoir un scénario dans lequel je ne souhaite pas que la saisie semi-automatique d'un utilisateur affiche un certain statut et/ou produit. Par exemple, je ne veux pas que l'utilisateur voit le statut "af" ou la catégorie "ai".

Je ces préférences stockées sous forme d'une session lorsque l'utilisateur se connecte en (à savoir « DoNotDisplayaf » ou « DoNotDisplayai »)

Comment puis-je modifier ma méthode originale afin que la saisie semi-automatique prend ces exceptions en compte? Excuses pour être épais et si ma question/exemple est un peu brumeux.

Merci pour toute aide reçue.

Répondre

1

Je ne sais pas exactement, mais étant donné que vous ne voulez pas que toutes les catégories de produits soient affichées, ne seriez-vous pas en mesure de les filtrer dans la clause Where de votre requête linq?

.Where(p => p.MemberId == memberid 
    && p.LocationId == locationid 
    && p.ACItem.Contains(prefixText) 
    && shouldBeDisplayed(p)) 

ShouldBeDisplayed est une fonction qui vérifie l'élément donné les conditions dans votre état de session pour dire si elles doivent être affichées ou non.