Hallo,
ich stehe gerade vor folgendem Problemchen. Ich versuche einen Expression Tree aufzubauen der folgendes widerspiegelt.
C#-Quelltext
1:
| m => m.property.Contains(string) || m.property.Contains(string2) |
Das Ganze soll auf eine Linq Klasse Mitarbeiter mit der Eigenschaft (string) mitarbeiter_tags angewendet werden.
Also
C#-Quelltext
1:
| m => m.mitarbeiter_tags.Contains(string) || m.mitarbeiter_tags.Contains(string2) |
Jedoch soll das ganze dynamisch auf einer List<string> funktionieren.
In etwa so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| List<string> tags = new List<string>(){"a","b", "C"};
var paramEx = Expression.Parameter(typeof(Mitarbeiter), "m");
Expression completeEx = null; foreach (var item in tags) { Expression partEx = Expression.Call( paramEx, typeof(Mitarbeiter).GetProperty("mitarbeiter_tags").GetValue(null, null).GetType().GetMethod("Contains"), Expression.Constant(item) ); completeEx = completeEx == null ? partEx : Expression.Or(completeEx, partEx); } return Expression.Lambda<Func<Mitarbeiter, bool>>(completeEx, paramEx); |
Ich habe jetzt schon unzählige Konstellationen probiert, komme nur leider nicht auf einen Grünen-Zweig. Irgend was ist immer Null oder der Cast schlägt fehl. Wäre über jede Hilfe dankbar, da ich schon zwei Tage an diesem Problem sitze. (Ich versteh es einfach nicht)
Danke Ronny