我有錯誤LINQ to Entities不支持LINQ表達式節點類型'Invoke'。LINQ表達式節點類型'Invoke'在LINQ to Entities中不受支持
var result = context.Users.Include("Roles")
.OrderBy(x => x.UserID)
.Where(x => !userIsAdmin(x))
.Skip(skip)
.Take(take)
.ToList();
private readonly Func<User, bool> userIsAdmin = u => u.Roles.Any(y => y.Name.Equals(AdminRoleName));
我在哪裏寫錯了?
在哪裏調用? – Amit
@Amit here:'.Where(x =>!userIsAdmin(x))''。 'Where'從其lambda參數中構建表達式;在這個表達式中userIsAdmin是一個'Func',因此它被翻譯成[Expression.Invoke](https://msdn.microsoft.com/en-us/library/bb355170(v = vs.110).aspx)和EntityFramework不支持'Expression.Invoke',因爲它不知道如何將其轉換爲SQL。 –
看看這個http://blogs.msdn.com/b/meek/archive/2008/05/02/linq-to-entities-combining-predicates.aspx – Ehsan