1
私は次のモデルがあります:Linqを使って階層をプロジェクトするには?
public class Addressbook()
{
public ICollection<Person> Persons { get; set;}
}
public class Person()
{
public Title Title { get; set; }
public Address Address { get; set; }
}
public class Address()
{
public PostCode PostCode { get; set; }
}
私は、一般的なリポジトリに次のような方法があります。私がやろうとしているAddressbook
をロードするには
public virtual IQueryable<T> Get(Expression<Func<T, bool>> predicate, params Expression<Func<T, object>>[] include)
{
if (include.Any())
{
var set = include.Aggregate<Expression<Func<T, object>>, IQueryable<T>>
(dbSet, (current, expression) => current.Include(expression));
return set.Where(predicate);
}
return dbSet.Where(predicate);
}
を:
public override Addressbook Get(Expression<Func<Addressbook, bool>> predicate)
{
return base.Get(predicate, x => x.Persons.Select(t => t.Title)
.Select(a => a.Address)
.Select(p => p.PostCode));
}
しかし、コンパイルエラーが発生する:
Title does not contain a definition for Address.
このような投影の正しいLinq構文は何ですか?