J'avais besoin de construire un filtre dynamique et je voulais continuer à utiliser des entités. Pour cette raison, je voulais utiliser le PredicateBuilder d'albahari.C# Entités PredicateBuilder: Le paramètre 'f' n'était pas lié dans l'expression de requête LINQ to Entities spécifiée
J'ai créé le code suivant:
var invoerDatums = PredicateBuilder.True<OnderzoeksVragen>();
var inner = PredicateBuilder.False<OnderzoeksVragen>();
foreach (var filter in set.RapportInvoerFilter.ToList())
{
if(filter.IsDate)
{
var date = DateTime.Parse(filter.Waarde);
invoerDatums = invoerDatums.Or(o => o.Van >= date && o.Tot <= date);
}
else
{
string temp = filter.Waarde;
inner = inner.Or(o => o.OnderzoekType == temp);
}
}
invoerDatums = invoerDatums.And(inner);
var onderzoeksVragen = entities.OnderzoeksVragen
.AsExpandable()
.Where(invoerDatums)
.ToList();
Quand je courais le code il n'y avait que 1 filtre qui n'a pas un filtre de date. Donc, seul le prédicat interne a été rempli. Lorsque le prédicat a été exécuté, j'ai l'erreur suivante.
Le paramètre 'f' est pas lié dans la spécifiée LINQ aux entités requête expression .
Lors de la recherche d'une réponse, j'ai trouvé page. Mais ceci est déjà implémenté dans le LINQKit.
Est-ce que quelqu'un d'autre a rencontré cette erreur et sait comment la résoudre?
J'ai également dû supprimer l'appel à AsExpandable() de mon objet IQueryable d'origine. –
Bonne réponse, mais trompeuse. La réponse de BloodBaz est la réponse la plus simple et la plus correcte – Mick