J'utilise LinqKit PredicateBuilder (http://www.albahari.com/nutshell/predicatebuilder.aspx) pour une méthode de recherche. Voici comment les relations sont construites (Entity Framework 4 CPT 5 POCO):LinqKit PredicateBuilder avec EF 4 CPT 5 relations de table?
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; }
}
Je dois être en mesure de construire un prédicat qui vérifie MusicSheet
(le Title
contient un terme de recherche spécifique), ainsi que le Name
ou Bio
de l'auteur qui pourrait également contenir ce terme de recherche. Voici ce que j'ai actuellement:
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
}
Des suggestions? Merci beaucoup.
Salut Joe, je vous remercie beaucoup pour votre aide. J'ai une question sur l'utilisation de la méthode "Ou". Dois-je le faire de la façon que vous avez montré ci-dessus, ou quelque chose comme ceci: 'predicate = predicate.Or (s => s.Title.Contains (mot-clé)) Ou (s => s.Authors.Any (a => a .Name.Contains (mot-clé))) ... ... 'Ou ils sont effectivement les mêmes (en utilisant plusieurs' Or' vs '||')? Merci encore. – Saxman
J'utiliserais le || opérateur quand vous le pouvez: l'arbre d'expression résultant sera plus simple. –