Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在LinQ to实体中的Where条件中使用最后一个方法_C#_Entity Framework 4 - Fatal编程技术网

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 here
RequestTransactions
时没有
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生成的。实际上,我正在寻找解决方案,但我不能:(