You can do this:
var cat_id=1; // Change this variable for your real cat_id
var query= from article in db.Articles
where article.Categories.Any(c=>c.Category_ID==cat_id)
select article;
This way you will get the articles that satisfies the condition you want. This is the sql code that is generated by that query:
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Title] AS [Title]
FROM [dbo].[Articles] AS [Extent1]
WHERE EXISTS (SELECT
1 AS [C1]
FROM [dbo].[ArticleCategories] AS [Extent2]
WHERE ([Extent1].[Id] = [Extent2].[Article_Id]) AND ([Extent2].[Category_Id] = @p__linq__0))
Update
Another option could be using SelectMany
extension method (as @Khaled pointed out) starting your query from Categories
instead of Articles
:
var query= db.Categories.Where(c=>c.Category_ID==cat_id).SelectMany(c=>Articles);
That would generate an Inner join instead of the EXIST
that is product of Any
extension method.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…