4

検索を行うメソッドには、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特定の検索語が含まれているか)をチェックする述語と、その検索語が含まれている可能性のある作成者のNameorBioを作成できる必要があります。これが私が現在持っているものです:

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
}

助言がありますか?どうもありがとうございました。

4

1 に答える 1

1

これを試しましたか:

var predicate = PredicateBuilder.False<MusicSheet>();
foreach (var term in terms)
{
   string keyword = term;

   predicate = predicate
      .Or(s => s.Title.Contains(keyword) ||
               s.Authors.Any (a => a.Name.Contains(keyword) || a.Bio.Contains(keyword)));
}
于 2011-02-24T01:43:08.187 に答える