首页 新闻 赞助 找找看

LINQ to Entities 不识别方法的奇怪问题

1
[已关闭问题] 关闭于 2010-11-25 16:04

我写了以下代码,确发现第一个自定义方法可以执行,第二个不行,会报【LINQ to Entities 不识别方法“System.Linq.IQueryable`1[WinTestApp.Struct.ACCOUNT_TBL] CreateQuery()”,因此该方法无法转换为存储表达式】错误不知道是何原因,请高手指点!

第一个方法:        protected IQueryable<ACCOUNT_TBL> orgAccount(DateTime start, DateTime end)
        {
            return _analysisEntity.ACCOUNT_TBL.Where(c => c.NEWTIME >= start && c.NEWTIME < end && c.DEL_FLAG == false);
        }

第二个方法:

       public IQueryable<ACCOUNT_TBL> CreateQuery()
        {
           return _analysisEntity.ACCOUNT_TBL.Where(c => c.DEL_FLAG == false);
        }

定义上面两个方法后,写如下语句进行调用会报刚才所说的错,如果把第二个方法内容拿出来,不写在方法内,就可以执行。

var q = from at in orgAccount(start, end)
                    group at by new { at.NEWTIME.Year, at.NEWTIME.Month, at.NEWTIME.Day }
                        into at2
                        select new CountMoney
                        {
                            Year = at2.Key.Year,
                            Month = at2.Key.Month,
                            Day = at2.Key.Day,
                            Count = at2.Sum(c => c.INSUTANCE)==0?0:at2.Sum(c => c.INSUTANCE)/CreateQuery().Sum(c => c.CASH + c.INSUTANCE + c.CHEQUE + c.OTHER + c.POS)};

protected IQueryable<ACCOUNT_TBL> orgAccount(DateTime start, DateTime end)
        {
            return _analysisEntity.ACCOUNT_TBL.Where(c => c.NEWTIME >= start && c.NEWTIME < end && c.DEL_FLAG == false);
        }

boool的主页 boool | 初学一级 | 园豆:20
提问于:2010-09-30 15:35
< >
分享
所有回答(1)
0

我在.NET4里写了类似你的代码后可以得到正确的结果。

钧梓昊逑 | 园豆:945 (小虾三级) | 2010-09-30 18:23
呵呵,不可能吧?我也安装了.Net 4.0 运行会报错上面我写的错误,注意第二个方法是在select子句里面的,呵呵,如果您写了,能不能把您写的内容发上来看看,我看看是不是有啥不同啊
支持(0) 反对(0) boool | 园豆:20 (初学一级) | 2010-10-07 22:24
注意我是 IQueryable 不是 IEnumerable
支持(0) 反对(0) boool | 园豆:20 (初学一级) | 2010-10-21 14:27
我在C#的50个改进书里找到了说法,是说表达式树解析的时候是不可能知道你使用的方法的。
支持(0) 反对(0) boool | 园豆:20 (初学一级) | 2010-11-09 10:06
所以只能是写表达式树,来解析,写方法,linq to entities的provider是无法解析方法的。
支持(0) 反对(0) boool | 园豆:20 (初学一级) | 2010-11-25 16:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册