1

我无法弄清楚如何在扩展方法中使用 linq 进行简单的左连接。

在对结果进行分页时,我需要使用扩展方法而不是理解查询。

var carParkPagedList =
db.CarPark
.Join(db.UserProfiles, cp => cp.UserProfileId, up => up.UserId, (cp, up))
.OrderBy(f => f.Name)
.Where(f => f.FloorId == floorId)
.Select(f => new CarParkListDisplayModel
{
    CarParkId = f.CarParkId,
    Name = f.Name
}).ToPagedList(page, 10);

我在任何地方都找不到这方面的帮助,我已经尝试了 101 个 linq 示例,这是为理解查询找到的,但不会为扩展方法提供任何支持。

4

1 回答 1

1

好的,谢谢西蒙,这种方法奏效了,从现在开始我将使用它,更加合乎逻辑。

var carParkPagedList =
(from cp in db.CarPark
where cp.FloorId == floorId
join occupant in db.UserProfiles on cp.UserProfileId equals occupant.UserId into gj
from occupant in gj.DefaultIfEmpty()
orderby cp.Name
select new CarParkListDisplayModel
{
    CarParkId = cp.CarParkId,
    Name = cp.Name,
    UsersName = (occupant == null ? "Un-ocupied" : occupant.FirstName + " " + occupant.LastName)
}).ToPagedList(page, 10);
于 2013-08-20T03:06:41.787 回答