var tagsAndCounts = from tag in context.Tags
where ...
select new { tag, count = tag.Articles.Count() }
var tagsWithCount = tagsAndCounts.ToList()
.Select(x =>
{
x.tag.ArticleCount = x.count;
return x.tag;
};
(я бы разработал это по-другому - ArticleCount
не должен быть частью модели, или это должна быть проекция на Articles
, которую вы могли бы загрузить с помощью Include()
. Но это делает то, что вы хотите)
Обновление: мой дизайн.
public class Tag
{
...
public int ArticleCount { get { return Articles.Count; } }
}
var tagsWithEagerLoadedArticles = context.Tags.Include(x => x.Articles)
.Where(...).Etc();
Конечно, хорошо это работает или нет, зависит от ожидаемого количества статей в теге. Если это несколько десятков, это будет работать разумно, будучи чище, чем другой подход. Если это сотни, другой лучше.
Теперь, если это так, вы должны использовать анонимный или именованный тип представления вместо повторного использования сущности.