Comment créer prédicat dynamiquement
Salut, je veux créer une liste basée sur la chaîne de recherche en utilisant les expressions de prédicat.
J'ai une liste de type de produits contient des noms différents.
List<products> list1 = new List<products>();
list1.Add(new products("sowmya"));
list1.Add(new products("Jane"));
list1.Add(new products("John"));
list1.Add(new products("kumar"));
list1.Add(new products("ramya"));
listBox1.ItemsSource = list1;
Maintenant, je veux filtrer le contenu en fonction de l'entrée utilisateur.L'utilisateur entrera n pas de chaînes avec un '+' comme séparateur. Après avoir reçu les cordes, je vais les passer à prédicat de l'objet comme ce
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
List<products> list2 = new List<products>();
Expression<Func<products, bool>> predicate = PredicateBuilder.True<products>();
if (e.Key == Key.Enter)
{
string Searchstring = textBox1.Text.ToString().Trim();
string[] separator = new string[] { "+" };
string[] SearchItems=Searchstring.Split(separator,StringSplitOptions.None);
foreach (string str in SearchItems)
{
string temp = str;
predicate =p => p.Name.Contains(temp.ToLower());
}
list2 = list1.AsQueryable().Where(predicate).ToList();
listBox1.ItemsSource = list2;
}
}
Si j'entre plus d'une corde(sowmya+jeanne+jean) sa ne donner que la dernière chaîne(jean) résultat mais je veux une liste de tous les chaînes de
Veuillez répondre à cette question parce que je suis en train d'essayer cela, mais je ne pouvais pas obtenir le résultat.
Merci de faire un peu d'aide merci.
OriginalL'auteur Sowmya | 2011-06-17
Vous devez vous connecter pour publier un commentaire.
Initialiser le prédicat comme faux
Vous avez besoin de combiner les prédicats à l'aide de
Or
Source de prédicat constructeur ici. Il fait partie de LINQKit
Code, dans le cas où le lien va
mise à jour de ma réponse. vous avez besoin d'utiliser
temp
passtr
à l'intérieur du prédicatHey Eranga merci soooo beaucoup sa fonctionne bien. Vraiment vous m'avez aidé
Super!!! Merci
Est-ce
predicatebuilder
de même pour cet article albahari.com/nutshell/predicatebuilder.aspx?OriginalL'auteur Eranga
Vous n'avez pas à construire un prédicat ici. Vous pouvez essayer quelque chose comme cela
liste 2 contiendra "kumar" et "ramya".
alors vous devriez essayer ce Eranga suggère.
OriginalL'auteur Gebb
Que je ne suis pas sûr que le prédicat instance a un Et méthode, je vous suggère d'utiliser ce code:
qui pourrait être en raison de la première
.ToLower()
j'ai juste ajouté. si pas, assurez-vous que votreName
la propriété contient à la fois des chaînes de caractères que vous recherchezmême problème nouveau de donner la dernière chaîne de résultat.Ya je suis sûr que La propriété "Name" contient à la fois les cordes
vous devriez vérifier si vous avez copié et collé le code correctement.
OriginalL'auteur Maziar Taheri