C# 在LinQ to实体中的Where条件中使用最后一个方法
看看这个代码C# 在LinQ to实体中的Where条件中使用最后一个方法,c#,entity-framework-4,C#,Entity Framework 4,看看这个代码 IQueryable<Request> RequestsTotal = DataContext.Requests; RequestsTotal = RequestsTotal.Where(rec => rec.RequestTransactions.Last().ServerStatusId != 0); IQueryable RequestsTotal=DataContext.Requests; RequestsTotal=RequestsTotal.
IQueryable<Request> RequestsTotal = DataContext.Requests;
RequestsTotal = RequestsTotal.Where(rec =>
rec.RequestTransactions.Last().ServerStatusId != 0);
IQueryable RequestsTotal=DataContext.Requests;
RequestsTotal=RequestsTotal.Where(rec=>
rec.RequestTransactions.Last().ServerStatusId!=0);
在执行这段代码的过程中,我遇到了一个关于在Where条件下使用最后一个方法的错误。我怎么能解决这个问题
更新1:这是发生的错误:
LINQ to Entities无法识别“DAL.RequestTransaction LastRequestTransaction”方法,并且无法将此方法转换为存储表达式。
UPDATE2:我有一个Request
表,该表与RequestTransactions
表有一对多关系。通过这段代码,我试图获取所有请求
,这些请求在最后一次重新编码其enter code hereRequestTransactions
时没有ServerStatusId=0
。这还有其他方法吗?尝试将您的last()方法放在where之外:
Request newResult =
RequestsTotal
.Where(rec => rec.RequestTransactions.ServerStatusId != 0)
.Last();
Last还将执行查询并返回单个请求对象,而不是IQueryable。因此,您不能对结果重复使用“RequestsTotal”。我将代码更改为:
IQueryable<Request> RequestsTotal = DataContext.Requests;
List<Request> temp = new List<Request>();
foreach (Request request in RequestsTotal)
{
RequestTransaction last = request.RequestTransactions.LastOrDefault();
if (last != null && last.ServerStatusId != 0)
temp.Add(request);
}
RequestsTotal = temp.AsQueryable();
IQueryable RequestsTotal=DataContext.Requests;
列表温度=新列表();
foreach(RequestsTotal中的请求)
{
RequestTransaction last=request.RequestTransactions.LastOrDefault();
if(last!=null&&last.ServerStatusId!=0)
临时添加(请求);
}
RequestsTotal=temp.AsQueryable();
请您提供发生的错误。@AndrasZoltan,我更新了它,谢谢-有趣的是,它抱怨一个无法理解的方法,但您的代码说它正在使用Last()
扩展,这应该可以。RequestTransactions
成员是EF生成的相关集合吗?@AndrasZoltan,是的,它们都是在我的EF模型中作为DBset生成的。实际上,我正在寻找解决方案,但我不能:(