有了下面的代碼,我得到的錯誤「LINQ到實體無法識別方法......」LINQ到實體無法識別方法
這是我的LINQ查詢:
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();
和這是靜態IQueryable方法:
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;
}
的可能重複的[LINQ實體無法識別方法](http://stackoverflow.com/questions/7259567/linq-to-entities-does-not-recognize-the-method) –
嘗試使用'AsEnumerable()'作爲'await base.Query()。AsEnumerable()。Where(...)...'我不確定,但它可以解決這個問題。 –
@Aslam Jiffry在這個問題中Joeri正在使用支持Or謂詞連接的庫。 – bubi