首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IQueryable不工作的扩展方法

IQueryable不工作的扩展方法
EN

Stack Overflow用户
提问于 2014-12-06 11:21:03
回答 1查看 296关注 0票数 1

我编写了一个扩展方法:

代码语言:javascript
复制
public static IQueryable<TSource> ConditionalDefaultEmpty<TSource>(this IQueryable<TSource> source, bool condition)
{
    return condition ? source.DefaultIfEmpty() : source ;
}

然后我给这个方法打了个电话,就像这样:

代码语言:javascript
复制
var q = from sr in myDb.tblStudentsRegInfos
        from de in myDb.tblDisciplinesEvents.Where(e => sr.Serial == e.tblStudentsRegInfoRef 
                                                     && e.tblStudentsRegInfoRef == studentRegId 
                                                     && (!forStudent || e.PublishOnInternet)
                                                     && (!formDate.HasValue || e.RegDate >= formDate) 
                                                     && (!toDate.HasValue || e.RegDate <= toDate))
                    .ConditionalDefaultEmpty(noPrintAll)
        join dt in myDb.tblDisciplinesTitles on de.tblDisciplinesTitlesRef equals dt.Serial
        where sr.Serial == studentRegId
        group sr by new
                {
...
                }
                into std
                select new
                {....
                };

但我知道这个错误:

成员访问列名是不合法的..。

我怎样才能解决这个问题?

更新:我理解EF不能编译成IQueryable.

EN

回答 1

Stack Overflow用户

发布于 2014-12-06 12:53:00

您只是不能添加您的自定义扩展方法,并希望实体框架能够将其转换为SQL,尽管这将非常酷,至少在这种情况下是这样的。

也就是说,您可以将IQueryable转换为IEnumerable

代码语言:javascript
复制
.AsEnumerable()
.ConditionalDefaultEmpty(noPrintAll)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27331098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档