【问题标题】:Linq join enumerable with entityLinq 与实体连接可枚举
【发布时间】:2012-07-10 19:39:10
【问题描述】:

我有一个实体,可以称之为Blog。每个Blog 实体都有许多Keyword。这 2 个通过关键字表上的 fk 相关联。

我有一个带有类似 FindAllBlogByKeywords(IEnumerable<string> keywords) 签名的查询

我将如何编写一个 linq 查询来提取与参数中的所有关键字匹配的任何博客。

问题是 EF 不允许可枚举和表之间的连接。它也不包含,因为我希望查询匹配所有关键字,而不仅仅是任何一个 - 除了我有 2 个关键字列表之外,我还需要参数中的关键字是持久性中关键字的子集。

【问题讨论】:

    标签: c# .net linq entity-framework join


    【解决方案1】:

    您可以为每个关键字添加 .Where 子句:

    IEnumerable<Blog> FindAllBlogByKeywords(IEnumerable<string> keywords)
    {
         IQueryable<Blog> query = context.Blogs;
    
         foreach(string key in keywords)
             query = query.Where(blog => blog.Keywords.Contains(key));
    
         // Execute query (optional)
         return query.ToList();
    }
    

    之所以有效,是因为查询执行被推迟到最后。通过链接多个.Where 子句,您可以有效地创建“ALL”语句。

    【讨论】:

    • 谢谢让我试试这个。看起来很有希望。
    猜你喜欢
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    相关资源
    最近更新 更多