Asp.net Core 5.0 Linq Take(1).ElementAt(索引)

Asp.net Core 5.0 Linq Take(1).ElementAt(索引),linq,sorting,asp.net-core,entity-framework-core,ef-core-5.0,Linq,Sorting,Asp.net Core,Entity Framework Core,Ef Core 5.0,我有一个长的Linq查询,我试图在该查询的任何索引中获取一个数据 我的问题是: public IEnumerable<WebFairField> WebFairFieldForFair(Guid ID,int index) { return TradeTurkDBContext.WebFairField.Where(x => x.DataGuidID==ID) .Include(x => x

我有一个长的
Linq
查询,我试图在该查询的任何索引中获取一个数据

我的问题是:

        public IEnumerable<WebFairField> WebFairFieldForFair(Guid ID,int index)
        {
            return TradeTurkDBContext.WebFairField.Where(x => x.DataGuidID==ID)
             .Include(x => x.Category)
             .ThenInclude(x=>x.MainCategory).AsSplitQuery()
             //
             .Include(x=>x.FairSponsors)
             .ThenInclude(x=>x.Company)
             .ThenInclude(x=>x.FileRepos).AsSplitQuery()
             //
             .Include(x=>x.WebFairHalls.Take(1).ElementAt(index)) //Thats the point where i stuck*
             .ThenInclude(x=>x.HallSeatingOrders)
             .ThenInclude(x=>x.Company)
             .ThenInclude(x=>x.FileRepos).AsSplitQuery()
             //
             .Include(x=>x.HallExpertComments).AsSplitQuery()
             .Include(x=>x.Products).AsSplitQuery()
             .Include(x=>x.FairSponsors).AsSplitQuery()
             .AsNoTrackingWithIdentityResolution()
             .ToList();
        }

public IEnumerable WebFairFieldForFair(Guid ID,int索引)
{
返回TradeTurkDBContext.WebFairField.Where(x=>x.DataGuidID==ID)
.包括(x=>x.Category)
.Then包括(x=>x.main类别).AsSplitQuery()
//
.包括(x=>x.0)
.然后包括(x=>x.Company)
.然后包括(x=>x.FileRepos).AsSplitQuery()
//
.Include(x=>x.WebFairHalls.Take(1).ElementAt(index))//这就是我坚持的地方*
.然后包括(x=>x.HallSeatingOrders)
.然后包括(x=>x.Company)
.然后包括(x=>x.FileRepos).AsSplitQuery()
//
.Include(x=>x.HallExpertComments).AsSplitQuery()
.Include(x=>x.Products).AsSplitQuery()
.Include(x=>x.fair赞助商).AsSplitQuery()
.AsNoTrackingWithIdentityResolution()的
.ToList();
}
当我这样做时,它会给我一个错误:
集合导航访问可以通过组合Where、OrderBy、ThenBy、Skip或Take操作进行过滤。
我知道我必须对这些数据进行排序,但我不知道怎么做。谁能告诉我该如何对该查询的数据进行排序

谢谢你的建议

错误 正如你所提到的,这条线

.Include(x=>x.WebFairHalls.Take(1).ElementAt(index)) //Thats the point where i stuck*
正在导致错误。基本上,您可以
获取第一个元素,然后尝试调用。这在技术上是一个问题,因为您需要将集合转换为,以便能够调用
ElementAt

这也是一个逻辑错误,因为如果只使用一个元素,那么尝试调用
ElementAt
就没有意义了

跳过 正如Strong大师所指出的,您可以跳过,如
Skip(index-1)。取(1)
,它跳过第一个index-1元素,然后取下一个,这是index的第四个元素

分类
如果您需要排序,请致电。如果您需要几个排序标准,那么使用。

类似于
Skip(索引-1)的东西。使用(1)
?另外,你可能需要应用一些排序来获得一致的结果。在
Take(1)
之后使用
ElementAt
在我能想象的任何上下文中都没有任何意义。谢谢你的建议,大师,它起了作用,但我想问一些问题。我这样做是为了我的分页,但我想知道是否有比我做的更好的方法。有更好的方法吗?对我来说,这需要对项目的领域有更多的了解。可能-是的,但要视情况而定。谢谢你的努力!