Я пытаюсь заставить этот запрос работать с EF, но он выдает исключение:
var c = ac.Communities.OrderBy(o => o.Posts.Count())
.Skip(page*limit)
.Take(limit)
.Select(o => o.ToViewModel()).ToArray();
Метод ToViewModel()
из модели Community
выглядит так:
public CommunityModel ToViewModel()
{
return new CommunityModel()
{
category = Category.Name,
created = CreationTime,
description = Description,
id = Id,
name = Name,
ownerId = Owner.Id,
postsCount = Posts.Count(),
score = Posts.Sum(o => o.Likes - o.Unlikes),
shortDescription = ShortDescription,
subscribersCount = Subscribers.Count(),
};
}
Что я делаю неправильно?
ToViewModel
, поместите.ToList()
передSelect
и посмотрите, сохраняется ли проблема. - person Stuart   schedule 03.01.2017List
больше не являетсяIQueryable
, поэтому он не пытается преобразовать это в SQL-запросы для базы данных, верно? Это означает, что он делает все это в памяти, рассматривая классCommunity
как фактический объект, а не объект базы данных, верно? - person Reynevan   schedule 03.01.2017IQueryable
в точке использованияToList
, затем следующие методы Linq действуют на коллекцию в памяти, и вам не нужно беспокоиться о переводе на SQL - person Stuart   schedule 03.01.2017