2011-06-07 64 views
0

我有两个表,文章和状态,我已将其关联到ctx.dbml文件中。使用LINQ Where子句按关联表中的数据进行筛选

Articles 
id:int 
title:varchar(255) 
status_id:int 

Statuses 
id:int 
name:varchar(255) 

我想要做的是过滤一个特定状态的所有文章。坦白地说,是这样的:

var filteredArticles = from article in ctx.Articles 
         where article.Status.name == "Active" 
         select article; 

是我在的是,在上述LINQ查询,二线,智能感知从来没有给我article.Status.name问题。我在网上看过这样的代码,所以我必须错过一些东西。请帮忙。

回答

4

要做到这一点就像你想要的,你必须建立两个表之间的关联。

How to: Create an Association (Relationship) Between LINQ to SQL Classes (O/R Designer)

或者,你可以只写手动加入。

var activeArticles = from a in ctx.Articles 
        join s in ctx.statuses on a.status_id equals s.id 
        select a; 

如果你去关联路由,要非常小心你不要提交SELECT N + 1错误。

+0

唉!我把协会设置了倒退。谢谢。 – Damiro 2011-06-07 13:16:53