Мы используем код Entity Framework 4.1 для сохранения данных. Некоторые из наших организаций имеют такие отношения:
[Serializable]
public class Conference
{
private IList<Attendee> people;
private string name;
public IList<Attendee> People
{
get { return this.team; }
private set { this.team = value; }
}
public string Name
{
get { return this.name; }
private set { this.name = value; }
}
}
[Serializable]
public class Attendee
{
private string firstname;
private string surname;
public string Firstname
{
get { return this.firstname; }
private set { this.firstname = value; }
}
public string Surname
{
get { return this.surname; }
private set { this.surname = value; }
}
}
Я бы хотел запросить наш репозиторий конференций, используя LINQ. Я могу легко найти конференцию по названию, используя поисковую спецификацию, подобную этой:
public class ConferenceNameSearch : ISpecification<Conference>
{
public Expression<Func<Conference, bool>> IsSatisfied()
{
return a => a.Name == "Christmas Party";
}
}
Но у меня действительно возникают проблемы с написанием спецификации поиска, которая бы возвращала все конференции, в которых участвовал хотя бы один человек с именем «Дэвид»:
public class ConferenceAttendeeNameSearch : ISpecification<Conference>
{
public Expression<Func<Conference, bool>> IsSatisfied()
{
return a => a.People.Contains( ???? err "David";
}
}
Есть ли способ сделать это? Кроме того, подняв его еще на один уровень сложности, если бы вместо простого поиска конференций с участником по имени «Дэвид» у меня был список имен, которым я хотел бы соответствовать, было бы это тоже возможно?
Спасибо за вашу помощь!