LinqKit PredicateBuilder 与 EF 4 CPT 5 表关系?

标签 linq entity-framework-4 predicatebuilder

我正在使用 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
}

有什么建议吗?非常感谢。

最佳答案

你尝试过这个吗:

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)));
}

关于LinqKit PredicateBuilder 与 EF 4 CPT 5 表关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5096893/

相关文章:

c# - LINQ查询表达式翻译器?

用于单元测试的 C# 通用存储库

存储过程和 Entity Framework 的性能

c# - PredicateBuilder "And"方法不起作用

entity-framework - Entity Framework 中的 LinqKit 和异步

lucene - Sitecore 内容搜索 PredicateBuilder 与 IEnumerable

c# - 加入不同对象的列表

.net - 我可以使用 LINQ 在列表中创建 n 个相同的条目吗?

C# Linq 使用引用列表排序列表

c# - EF4 自引用关联 0..1 -> 1