Salut,

Je dois effectuer un filtre en cascade sur une vue dont chaque champ est le résultat d'une requête XQuery.

La vue permet d'occulter l'XML.

J'ai mappé ma vue à EF.

Chaque colonne de ma vue a un Nom qui est utilisé dans une table de conditions (KeyValuePair<string,string>)

J'ai chargé l'ensemble de mes éléments une première fois.
J'aimerais arriver à faire un truc du style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
foreach (var oCondition in lstConditions) {
    switch (oCondition.Key.Nom) { 
         maVue = maVue.Where(unItem.DontLeChamps[oCondition.Key]==oCondition.Value);
    }
}
Je suis pratiquement certain que c'est possible mais je ne trouve pas la syntaxe.

En cherchant je suis tombé sur
http://developers.de/blogs/andreas_l...framework.aspx

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
   1: Dictionary<string, string> props = new Dictionary<string, string>();
   2: props.Add("PropA", "abc");
   3: props.Add("PropB", "cde");
   4:  
   5: using (EFTestEntities context = new EFTestEntities())
   6: {
   7:     var items = from item in context.TItem.Include("TItemProp")
   8:                 select item;
   9:  
  10:     foreach (var prop in props)
  11:     {
  12:         items = items.Where(i => (i.TItemProp.Count(ip => ip.PropKey == prop.Key && ip.PropValue == prop.Value)) > 0);
  13:     }
  14:  
  15:     return items.ToList();
  16: }
Mais je n'arrive pas à l'appliquer à mon cas.

Ca vous parle ?

D'avance merci

Laurent