Это должно работать:
IQueryable parentQuery = context.Parent.Select(p => new { Parent = p, ChildCount = p.Childs.Count() });
EDIT
Если вы определяете:
public class ParentModel
{
public Task Parent { get; set; }
public int ChildCount { get; set; }
}
, вы можете использовать
IQueryable parentQuery = context.Parent.Select(p => new ParentModel { Parent = p, ChildCount = p.Childs.Count() });
EDIT
Вы также можете сделать:
var parentQuery = context.Parent.Select(p => new { Parent = p, ChildCount = p.Childs.Count() }).ToList();
parentQuery.ForEach(p => p.Parent.ChildCount = p.ChildCount);
var result = return parentQuery.Select(p => p.Parent);
Короткие и у вас есть ваша собственность.
Установите в поле «Владелец» значение «Собака, а не собака»
type Owner struct {
dog *Dog
}
func newOwner(dog *Dog) Owner {
var owner Owner
owner.dog = dog
return owner
}
при вызове из основного использования & собака
var dog Dog
dog.name = "dog"
owner := newOwner(&dog)
Тип получателя метода должен быть указателем, если вы хотите, чтобы этот метод изменил состояние получателя.
То есть так же, как вы объявили метод growOld
, метод tellDogToGrowOld
также должен иметь приемник указателей:
func (owner *Owner) tellDogToGrowOld() {
owner.dog.growOld()
}
В качестве альтернативы, вы можете сделать поле, хотите изменить указатель, например:
type Owner struct {
dog *Dog
}
func newOwner(dog *Dog) Owner {
var owner Owner
owner.dog = dog
return owner
}
func (owner Owner) tellDogToGrowOld() {
owner.dog.growOld()
}