выглядит так, будто вы пытаетесь выполнить операцию linq to object, и она пытается преобразовать ее в оператор sql.
Имейте в виду: если это произойдет, я ожидаю, что sqlсвязанный с следующим вызовом будет происходить один раз за MembershipModule:
return this.Privileges().Any(p => p.Name.Equals(AccessPrivilege));
Вы пробовали пропустить, используя метод Accesible, и напрямую попасть в коллекцию привилегий?Примерно так код ниже.Я изменил заявление о возврате.Это суть, может быть не на 100% правильно:
public static List<MembershipModule> Collection()
{
if(!MembershipUser.Connected)
return new List<MembershipModule>();
var mod = MembershipModule.SearchById(new Guid("b012d35f-6af1-47de-9e54-e5df957c07e1"));
var y = from p in LinqUtil.Context.MembershipModuleActions
where
p.MembershipModule.Id.Equals(mod.Id) &&
p.MembershipRolePrivileges.Any(rp => rp.ModuleActionId.Equals(p.Id))
select p.MembershipAction;
var u = y.Any(p => p.Name.Equals(AccessPrivilege));
return LinqUtil.Context.MembershipModules.Where(m => m.Privileges().Any(p => p.Name.Equals(AccessPrivilege)).ToList();
}