LINQ - для сущностей не распознает метод Boolean (int32) - PullRequest
0 голосов
/ 09 марта 2012

У меня есть класс с именем Person, у которого есть метод hasPermission (Int 32)

Я пытаюсь позвонить в linq и пробовал разные варианты, но пока не нашел решения, если у кого-то есть идеи, пожалуйста, помогите.

У меня сейчас есть

IEnumerable<Person> co = this.Person();

//this.Person().Where(o => o.IsDeleted == false);

//    src.Where(o => o.IsDeleted == false).Select(v => new { Text = v.Name });
return this.Json(co,JsonRequestBehavior.AllowGet);

Вы можете увидеть пару других вещей, которые я пробовал в комментариях.

Заранее спасибо за помощь

Джемма

1 Ответ

1 голос
/ 09 марта 2012

ОК, так как это LINQ to Entities, вам необходимо использовать метод AsEnumerable:

// this.Person().Where(o => !o.IsDeleted) is translated by EF, the rest isn't
this.Person().Where(o => !o.IsDeleted).AsEnumerable().Where(p => p.hasPermission(5));

Метод расширения AsEnumerable превращает ваш результат LINQ to Entities в общий IEnumerable.Таким образом, последующий LINQ не переводится в SQL с помощью EF, а просто выполняется.

См. Также MSDN для получения дополнительной информации о AsEnumerable: http://msdn.microsoft.com/en-us/library/bb335435.aspx

...