2012-07-10 94 views
0

我有一个实体,让我们说它称为Blog。每个Blog实体有很多Keyword。 2通过关键字表中的fk关联。Linq加入enumerable与实体

我有这样的FindAllBlogByKeywords(IEnumerable<string> keywords)

我怎么会写LINQ查询拉匹配所有的关键字在参数任何博客签名的查询。

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

回答

6

您可以添加。凡条款为每个关键字:

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”语句。

+0

谢谢,让我试试这个。看起来很有希望。 – Alwyn 2012-07-10 19:50:59