C# IQueryable<;T>;加入Where条件实体框架6.0
我试图使用where条件和C# IQueryable<;T>;加入Where条件实体框架6.0,c#,.net,entity-framework,linq,C#,.net,Entity Framework,Linq,我试图使用where条件和IQueryableJoin方法,但没有找到任何资源来提供如何基于子表字段筛选记录的线索 e、 g我想通过IQueryableLinq语句执行的普通查询: Select m.* from vsk_media as m inner join vsk_media_album as v on m.id=v.mediaid where v.albumid=47 以下是我的代码,它在没有where语句的情况下运行良好:
IQueryable
Join方法,但没有找到任何资源来提供如何基于子表字段筛选记录的线索
e、 g我想通过IQueryable
Linq语句执行的普通查询:
Select
m.*
from
vsk_media as m
inner join
vsk_media_album as v
on
m.id=v.mediaid
where
v.albumid=47
以下是我的代码,它在没有where语句的情况下运行良好:
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 Query=entities.vsk_media;
Query.Join(entities.vsk_media_相册
,c=>c.id
,cm=>cm.mediaid
,(c,cm)=>新的{c,cm});
现在,在上面的IQueryable语句中,如何添加where条件以与子表vsk_media_albums(其中v.albumid=47)匹配
我尽了最大的努力寻找解决方案,但在网上找不到任何好的资源。我对普通的Linq语句不感兴趣。您可以使用扩展方法来尝试:
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();
我知道这已经得到了回答,但您应该在vsk_media上设置导航属性,然后您可以这样做(假设您从media到media_相册的导航属性称为“相册”): 如果您只需要根据相册信息进行过滤,而不需要相册信息,则可以执行以下操作:
var list = entities.vsk_media
.Where(m=>m.Albums.albumid==47);
什么是“普通linq语句”以及为什么您对它不感兴趣?只需在查询结束时附加
。Where(e=>e.cm.albumid==47)
,然后选择(x=>x.c)我猜他是否只想要vsk_媒体实体。普通linq“从m in entities.vsk_媒体加入。。。其中v.albumid=47,但由于我的项目要求,我更喜欢使用IQuerable语句。@无望,它可以工作,我想:)谢谢,但我想用IQuerable连接语句做同样的事情谢谢,这会很有帮助。目前只需要where操作。“只需要where操作”,所以您永远不需要引用vsk_媒体的相册或相册的媒体,并且除了这一个位置,您永远不加入这两个表?
var list = entities.vsk_media
.Where(m=>m.Albums.albumid==47);