Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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# 如何使用ef在c查询中访问列表中的对象?_C#_List_Entity Framework_Linq_Search - Fatal编程技术网

C# 如何使用ef在c查询中访问列表中的对象?

C# 如何使用ef在c查询中访问列表中的对象?,c#,list,entity-framework,linq,search,C#,List,Entity Framework,Linq,Search,所以我对我要做的一个查询有问题。我正在尝试使用ef获取c中linq查询中列表的最后一个元素 以下是我试图执行的代码: public List<Viagem> getViagensToBeCompletedInBlocoTrabalho() { return this.context.Viagens .Where(v => v.blocosTrabalho.Count() == 0 || !v.blocosTrabalho.Las

所以我对我要做的一个查询有问题。我正在尝试使用ef获取c中linq查询中列表的最后一个元素

以下是我试图执行的代码:

 public List<Viagem> getViagensToBeCompletedInBlocoTrabalho()
 {
     return this.context.Viagens
        .Where(v => v.blocosTrabalho.Count() == 0
          || !v.blocosTrabalho.LastOrDefault().noFim.Equals(v.horasPassagem.LastOrDefault().codigoNo)
        )
        .ToList();
 }
但我得到了这个错误:执行“LastOrDefault”操作的查询必须具有确定性排序顺序。在调用“LastOrDefault”之前,重写查询以在序列上应用“OrderBy”子句

我做错了什么

顺便说一句,我想要的排序是表中条目的顺序,所以我真的不想对任何东西进行排序。虽然我也测试过排序,但它不起作用


提前感谢您的帮助:-

实际上,SQL标准不支持从末尾检索记录,甚至不保证记录的具体顺序。EF正试图通过更正OrderBy运算符来模拟这种情况,如果您不指定,它将失败

考虑重写您的查询并使其具有性能:

公共列表GetViagenstobecompletedinLoctorabalho { 变量查询= 在这个上下文中,从v开始 从v.blocosTrabalho.orderByDescendaningx=>x.Id中的b开始 .Take1.DefaultIfEmpty 从v.horasPassagem.OrderByDowneringX=>x.Id中的h开始 .Take1.DefaultIfEmpty 哪里 b==null | | b!=null&&b.noFim==h.codigoNo 选择v; 返回query.ToList; }
您不会说您正在使用哪个DBMS。但在大多数系统中,表中条目的顺序并没有真正意义。表没有定义的顺序,因此您可以与排序共享测试代码吗?你在排序方面也面临同样的问题吗?@ChetanRanpariya不太一样,这是一个不同的问题,但仍然不起作用。也许我的查询构造得很糟糕。这是有效的,但前提是blocoTrabalho Id是顺序的。用户可以指定此id,例如,如果第一个blocotrabalho的id为BT2,第二个为BT1,则此操作将不起作用。我需要按表中的条目对列表进行排序。Horasapassagem很好,虽然我可以订购,但没有问题!如果您需要这样的查询,您必须以某种方式引入序列。或者选择几个列进行排序。如果不指定OrderBy,数据库引擎不保证记录的顺序。抱歉,尽管我的评论在域中缺少一个概念,但我实际上可以使所有内容有序。非常感谢=