首页 新闻 搜索 专区 学院

IQueryable与数组关联查询能否返回IQueryable?

0
悬赏园豆:20 [已解决问题] 解决于 2016-06-06 22:40

users类型为UserDto[],members类型为IQueryable<Member>,代码片段如下:

var users = ucService.GetUsersByBlogIds(blogIds);
return from m in members
       join u in users on m.BlogId equals u.BlogId
       orderby m.DateAdded descending
       select new MemberDto
       {
             BlogUrl = u.BlogUrl,
             RealName = m.RealName,
             MemberId = m.MemberId,
             StudentNo = m.StudentNo
       };

上述代码会抛异常:Unable to create a constant value of type 'xxx.UserDto'. Only primitive types or enumeration types are supported in this context.

将members.ToList()虽然可以解决这个异常,但数据量大的话这样做就不太合理,请问有没有什么方法可以让结果返回IQueryable?

JoiWilliam的主页 JoiWilliam | 小虾三级 | 园豆:546
提问于:2016-06-04 20:23
< >
分享
最佳答案
0

不能.除非你前面返回的也是一个iqueryable.你这是不知道什么是iqueryable..才会有这种想法...

查一下吧

收获园豆:10
吴瑞祥 | 高人七级 |园豆:28820 | 2016-06-04 20:42
其他回答(1)
0

一个blogId对应多个user吗?

收获园豆:10
蝌蝌 | 园豆:158 (初学一级) | 2016-06-05 08:28

一个blogId对应一个user,通过blogIds获取的是不同的用户(UserDto[])

支持(0) 反对(0) JoiWilliam | 园豆:546 (小虾三级) | 2016-06-05 08:35

@JoiWilliam: 那就取users的中第一条数据,作为查询条件。

也就是说用简单类型。

支持(0) 反对(0) 蝌蝌 | 园豆:158 (初学一级) | 2016-06-05 08:45

@JoiWilliam: 

var users = ucService.GetUsersByBlogIds(blogIds);
var user = users.FirstOrDefault();
//todo:判空
return members.Where
(
    m=>m.BlogId == user.BlogId
)
.OrderBy(……).Select
(
    u=>new MemberDto()
    {
        BlogUrl=user.BlogUrl,
        ……
    }
);
支持(0) 反对(0) 蝌蝌 | 园豆:158 (初学一级) | 2016-06-05 08:57

@蝌蝌: 我返回IQueryable是需要做分页的

支持(0) 反对(0) JoiWilliam | 园豆:546 (小虾三级) | 2016-06-05 09:25

@JoiWilliam:这个返回的就是IQueryable啊

支持(0) 反对(0) 蝌蝌 | 园豆:158 (初学一级) | 2016-06-05 21:10

@蝌蝌: 不太明白,users.FirstOrDefault()的意义是什么呢?这样后面再.Select user的值不就是固定的了?

支持(0) 反对(0) JoiWilliam | 园豆:546 (小虾三级) | 2016-06-05 21:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册