EntityFramework对具有连接的查询进行分页

Tim*_*thy 4 paging entity-framework join

我有一个左连接的查询:

   var query = (from v in context.Vehicles

                //left join vehicleAttributes
                join va in context.VehicleAttributes on v.VehicleId equals va.VehicleId into vAttributes
                from vehicleAttributes in vAttributes.DefaultIfEmpty()

                where v.FleetId == fleetId

                select new { v, vehicleAttributes });
Run Code Online (Sandbox Code Playgroud)

现在我需要对它进行分页.

这可行,但获得所有行,比我实际需要的更多

query.ToList().Select(x => x.v).Distinct().Skip(10 * (page - 1)).Take(10).ToList();
Run Code Online (Sandbox Code Playgroud)

这是我试过的,但现在我没有联合价值

query.Select(x => x.v).Distinct().ToList().Skip(10 * (page - 1)).Take(10).ToList();
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢

Sea*_*nny 6

ToList()触发对数据库的调用,因此您只需在应用Skip and Take后执行此操作.您还需要一个OrderBy子句.

你应该可以做这样的事情:

var data = (from v in context.Vehicles
         join va in context.VehicleAttributes on v.VehicleId equals va.VehicleId into vAttributes
         from vehicleAttributes in vAttributes.DefaultIfEmpty()
         where v.FleetId == fleetId
         select new { v, vehicleAttributes })
         .OrderBy(p => p.v.FleetId)
         .Skip(10 * (page - 1))
         .Take(10)
         .ToList();
Run Code Online (Sandbox Code Playgroud)