Linq-GroupJoin

时间:2019-11-20 15:18:32

标签: c# entity-framework linq

在Entity Framework中,给定2个System.Data.Entity.DbSets,ORDERS和USERS。

注意:ORDERS表中可能有来自USERS表之外的用户的订单。在这种情况下,CreatedUserName可以为空/空

订单与用户之间的关系=>多对一/无

我想在ORDERS中获得所有记录,而在USERS中获得匹配的记录。

以下是我尝试过的方法。只是想检查一下是否可以更有效地完成

var OrderDetails = oContext.Orders
    .GroupJoin(
        oContext.Users,
        order => order.CreatedUserID,
        user => user.UserID,
        (order, user) => new { Order = order, User = user }
    )
    .Where(x => new List<int> { 123, 124, 125, 126 ... }.Contains(x.Order.OrderID))
    .Select(x => new OrderDetails()
    {
        OrderID = x.Order.OrderID,
        CreatedUserName = x.User.FirstOrDefault().FullName,
        .
        .
        .
    });

我更改了原始代码的上下文,但是方法与上面相同。如果订单和用户之间的关系不合理,请忽略。

0 个答案:

没有答案