Я пытаюсь достичь того же результата, что и вы.Моим лучшим решением до сих пор было создание Wrapper для моей сущности со свойством Count для установки дополнительного свойства в частичном классе.Если взять в качестве примера ваш случай, это будет выглядеть так:
public class ItemWithCount
{
public Item Item { get; set; }
public int Count
{
get { return Item.Count; }
set { Item.Count = value; }
}
}
Тогда вы можете сделать запрос следующим образом:
var ret = (from item in contex.Items
select new ItemWithCount
{
Item = item,
Count = item.refToAnotherEntity.Count()
}).AsEnumerable().Select(x => x.Item);
Вместо создания оболочки вы можете выбрать анонимный тип с помощьюте же 2 свойства, но это означает, что после запроса вам нужно будет просмотреть результаты и установить значение свойства Count каждой сущности.Примерно так:
var ret = (from item in contex.Items
select new
{
Item = item,
Count = item.refToAnotherEntity.Count()
});
Parallel.ForEach(ret, x => x.Item.Count = x.Count);
var results = ret.Select(x => x.Item);
Я предпочитаю первый вариант, хотя я бы хотел найти решение без необходимости создавать новый класс ... Есть идеи?