IQueryable< T>加入条件实体框架6.0 [英] IQueryable<T> Join with Where Condition Entity Framework 6.0
问题描述
我正在尝试使用IQueryable<T>
联接方法使用where条件,但是找不到任何资源给我提示如何根据子表字段过滤记录.
I am trying to use where condition with IQueryable<T>
Join approach but find no resources to give me clue how how to filter records based on child table field.
例如我要通过IQueryable<T>
Linq语句执行的普通查询:
e.g Normal query that I want to execute via IQueryable<T>
Linq Statement:
Select
m.*
from
vsk_media as m
inner join
vsk_media_album as v
on
m.id=v.mediaid
where
v.albumid=47
这是我的代码,在没有where语句的情况下效果很好:
Here is my code which works well without where statement:
IQueryable<vsk_media> Query = entities.vsk_media;
Query.Join(entities.vsk_media_albums
, c => c.id
, cm => cm.mediaid
, (c, cm) => new { c, cm });
现在如何在上述IQueryable语句中添加与子表vsk_media_albums
匹配的where条件(其中v.albumid = 47).
Now how to add where condition to match with child table vsk_media_albums
(where v.albumid=47) in above IQueryable Statement.
我尽力找到解决方案,但没有在网络中找到任何好的资源.我对正常的Linq声明不感兴趣.
I tried my best to find solution but not found any good resource in web. I am not interested in normal Linq Statement.
推荐答案
您可以使用扩展方法进行尝试:
You could try this using extension methods:
var query = entities.vsk_media
.Join(entities.vsk_media_album,
m => m.id,
v => v.mediaid,
(m, v) => new { m, v })
.Where(x => x.v.albumid == 47)
.Select(x => x.m);
var list = query.ToList();
或使用linq结构:
var query = from m in entities.vsk_media
join v in entities.vsk_media_album on m.id equals v.mediaid
where v.albumid = 47
select m;
var list = query.ToList();
这篇关于IQueryable< T>加入条件实体框架6.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!