Я использую LinqKit PredicateBuilder (http://www.albahari.com/nutshell/predicatebuilder.aspx) для метода, который выполняет поиск. Вот как строятся отношения (Entity Framework 4 CPT 5 POCO):
public class MusicSheet
{
[Key]
public int ID { get; set; }
public string Title { get; set; }
public string Key { get; set; }
public virtual ICollection<Author> Authors { get; set; }
}
public class Author
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public string Bio { get; set; }
public virtual ICollection<MusicSheet> MusicSheets { get; set; }
}
Мне нужно уметьсоздать предикат, который проверяет MusicSheet
(Title
содержит определенный поисковый термин), а также Name
или Bio
автора, который также может содержать этот поисковый термин. Вот что у меня сейчас есть:
var predicate = PredicateBuilder.False<MusicSheet>();
foreach (var term in terms)
{
string keyword = term;
predicate = predicate
.Or(s => s.Title.Contains(keyword));
// TODO Check for Author Name & Bio
}
Есть предложения? Большое спасибо.