繁体   English   中英

LINQ 到实体 - 将所有字段放入最终结果

[英]LINQ to Entities - put all fields into final result

让我们以这个查询为例(这来自 MSDN 文档):

ObjectSet<SalesOrderHeader> orders = context.SalesOrderHeaders;
ObjectSet<SalesOrderDetail> details = context.SalesOrderDetails;

var query =
    from order in orders
    join detail in details
    on order.SalesOrderID equals detail.SalesOrderID
    where order.OnlineOrderFlag == true
    && order.OrderDate.Month == 8
    select new
    {
        SalesOrderID = order.SalesOrderID,
        SalesOrderDetailID = detail.SalesOrderDetailID,
        OrderDate = order.OrderDate,
        ProductID = detail.ProductID
    };

如果我想将“顺序”中的所有字段放入最终的 object (即 select 新)中,除了来自 detail 的附加字段,我该怎么做?

var query =
    from order in orders
    join detail in details
    on order.SalesOrderID equals detail.SalesOrderID
    where order.OnlineOrderFlag == true
    && order.OrderDate.Month == 8
    select new
    {
        SalesOrderHeader = order;
        SalesOrderDetail = detail;
    };

您可以在查询中返回整个SalesOrderHeader object,或者使用Include方法。

ObjectSet<SalesOrderHeader> orders = context.SalesOrderHeaders;
ObjectSet<SalesOrderDetail> details = context.SalesOrderDetails;

var query =
    from order in orders
    join detail in details
    on order.SalesOrderID equals detail.SalesOrderID
    where order.OnlineOrderFlag == true
    && order.OrderDate.Month == 8
    select new
    {
        SalesOrderID = order.SalesOrderID,
        SalesOrderDetailID = detail.SalesOrderDetailID,
        OrderDate = order.OrderDate,
        ProductID = detail.ProductID,
        Order = order
    };

或者使用Include方法(假设您的SalesOrderHeader class 具有对SalesOrderDetail类的集合引用):

ObjectSet<SalesOrderHeader> orders = context.SalesOrderHeaders;
ObjectSet<SalesOrderDetail> details = context.SalesOrderDetails;

var query =
    (from order in orders
    where order.OnlineOrderFlag == true
    && order.OrderDate.Month == 8
    select order).Include(x => x.Details);

做这样的事情?

            var query =
            from order in orders
            join detail in details
            on order.SalesOrderID equals detail.SalesOrderID
            where order.OnlineOrderFlag == true
            && order.OrderDate.Month == 8
            select new
            {
                SalesOrderID = order.SalesOrderID,
                SalesOrderDetailID = detail.SalesOrderDetailID,
                OrderDate = order.OrderDate,
                ProductID = detail.ProductID,
                Order = order
            };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM