【发布时间】:2012-04-05 02:23:40
【问题描述】:
我在使用 EF lambda 表达式时遇到问题。
partial void StatusCallBackRequired_PreprocessQuery(ref IQueryable<PatientsTelephoneFollowupDetail> query)
{
var newList = PatientsTelephoneFollowupDetails.OrderBy(x => x.Id).ToList();
query = query.Where(p => p.PatientsMasterItem.PatientsTelephoneFollowupDetail.OrderByDescending(c => c.Id).FirstOrDefault(c => c.Status == "7") != null);
}
错误是:
“Microsoft.LightSwitch.IOrderedDataServiceQueryable”不包含“ToList”的定义,并且找不到接受“Microsoft.LightSwitch.IOrderedDataServiceQueryable”类型的第一个参数的扩展方法“ToList”(您是否缺少 using 指令或程序集参考?)
我已经包含了 system.linq 命名空间。
编辑:(基于 D Stanley 代码的结果)
可以在下面找到示例数据,我希望检索突出显示的记录
但是当前的输出是
将查询更改为 query.select 仅返回一条记录,但它是错误的记录。
【问题讨论】:
-
您是否重建它以确保您没有看到过时的编译器错误?
-
你确定 System.Linq 有 IOrderedDataServiceQueryable 的扩展方法吗?当我用谷歌搜索 IOrderedDataServiceQueryable 时,出现的 only 链接就是这个 SO 问题。我什至无法研究该类型以查看 Linq 是否为它提供了扩展方法。
-
只是出于兴趣,你为什么要删除 newList 然后不使用它?
-
什么是
Microsoft.LightSwitch.IOrderedDataServiceQueryable?它是否扩展IEnumerable?或者,它有没有扩展方法ToList?如果是这样,您必须using包含 extends 方法的命名空间。 -
我认为preprocessquery函数只支持Iqueryable。是否有替代方法可以使用 IQueryable 而不是 IEnumerable 来实现相同的功能?
标签: c# linq entity-framework linq-to-sql visual-studio-lightswitch