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