IQueryable< T>加入条件实体框架6.0 [英] IQueryable<T> Join with Where Condition Entity Framework 6.0

查看:113
本文介绍了IQueryable< T>加入条件实体框架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&lt; T&gt;加入条件实体框架6.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆