我在跟踪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'的定义,并且没有扩展方法'ToList'接受类型'Microsoft.LightSwitch.IOrderedDataServiceQueryable'的第一个参数可以找到(你是否缺少using指令或汇编参考?)
我已经包含了system.linq命名空间。
编辑:(结果基于D Stanley代码)
示例数据可以在下面找到,我正在寻找检索突出显示的记录
但是当前的输出是
将查询更改为query.select只返回一条记录,但它是错误的记录。
答案 0 :(得分:0)
要尝试的事情:
转为IEnumerable<T>
:
var newList = ((IEnumerable<PatientsTelephoneFollowupDetail>)PatientsTelephoneFollowupDetails.OrderBy(x => x.Id)).ToList();
从查询结果初始化列表:
var newList = new List<PatientsTelephoneFollowupDetail>(PatientsTelephoneFollowupDetails.OrderBy(x => x.Id)));
修改强>
看起来LightSwitch没有实现IEnumerable<T>
。还有两件事要尝试:
假设它实现了IEnumerable
,请使用IEnumerable.Cast<T>()
:
var newList = new List<PatientsTelephoneFollowupDetail>(
PatientsTelephoneFollowupDetails.OrderBy(x => x.Id)
.Cast<PatientsTelephoneFollowupDetail>()
);
蛮力:
var newList = new List<PatientsTelephoneFollowupDetail>();
foreach(var item in PatientsTelephoneFollowupDetails.OrderBy(x => x.Id))
newList.Add(item);
答案 1 :(得分:0)
您需要找到此类型的定义:Microsoft.LightSwitch.IOrderedDataServiceQueryable
找到后,请确认:
是否实施IEnumerable<T>
?如果是这样,您的代码无法到达System.Linq.Enumerable
。您说您正在使用System.Linq,因此请确保您的项目引用System.Core.dll
。
如果没有,它是否实施IEnumerable
?如果是这样,您可以编写foreach
循环并将每个项目添加到您创建的List<T>
。
如果没有,请检查属性。通常有一些方法来获得你可以编写循环的东西。