Ich habe folgende Modelle:Wie projiziert Hierarchie mit 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; }
}
Ich habe die folgende Methode in meinem generic-Repository:
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);
}
Um eine Addressbook
lade ich zu tun bin versucht:
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));
}
Allerdings bekomme ich einen Kompilierfehler:
Title does not contain a definition for Address.
Wie lautet die richtige Linq-Syntax für diese Art der Projektion?