With following code, I get the error "LINQ to Entities does not recognize the method ..."
This is my linq query :
var retour = await base.Query().Where(f => f.HasbeenEnabled && f.UniqueID == campaingUniqueID)
.Select(f => new GlobalInfoModel
{
FollowUpCompletion_Total = f.Questions
.SelectMany(g => g.Answers)
.FilterByKeyValue(filter)
.Count()
}).FirstOrDefaultAsync();
and this is the static IQueryable method :
public static IQueryable<Answer> FilterByKeyValue(this IQueryable<Answer> query, KeyFilterModel[] filters)
{
var expendable = query.AsExpandable();
if (filters != null && filters.Length > 0)
{
var queryand = PredicateBuilder.True<Answer>();
foreach (var filter in filters)
{
var predicate = PredicateBuilder.False<Answer>();
foreach (var value in filter.FilterValues)
{
var key = string.Format(filter.Key);
var _value = string.Format(value);
predicate = predicate.Or(f => f.RespondentEntryID.HasValue && f.RespondentEntry.Values.Any(g => g.Key.Name.Equals(key) && g.Values.Equals(_value)));
}
queryand = queryand.And(predicate.Expand());
}
query = expendable.Where(queryand);
}
return query;
}