Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将sql更正为linq查询_C#_Entity Framework_Linq - Fatal编程技术网

C# 将sql更正为linq查询

C# 将sql更正为linq查询,c#,entity-framework,linq,C#,Entity Framework,Linq,我很难将此sql查询转换为linq查询。我正在尝试选择所有订单,并将订单详细信息附加到该订单。在sql中,查询是正确的。当我用linq写的时候,一切都乱成一团。这是我的密码: var result = from order in orders join orderDetail in orderDetails on order.OrderID equals order

我很难将此sql查询转换为linq查询。我正在尝试选择所有订单,并将订单详细信息附加到该订单。在sql中,查询是正确的。当我用linq写的时候,一切都乱成一团。这是我的密码:

                var result = from order in orders
                         join orderDetail in orderDetails
                         on order.OrderID equals orderDetail.OrderID

                         select new OrderVm
                         {
                             OrderId = order.OrderID,
                             OrderDetails = order.Order_Details.Select(x =>
                             new OrderDetailVm
                             {
                                 OrderId = orderDetail.OrderID,
                                 UnitPrice = orderDetail.UnitPrice,
                                 Quantity = orderDetail.Quantity,
                                 ProductId = orderDetail.ProductID

                             })
                         };

            return result.ToList();
这就产生了这个结果

但是如果我用sql写

select 
o.OrderID,
o.CustomerID,
od.UnitPrice,
od.Quantity,
od.productid,
p.ProductName   
from Orders o
inner join [Order Details] od
    on o.OrderID = od.OrderID
inner join Products p
    on p.ProductID = od.ProductID
where o.OrderID = 10248

我的预期结果是

从您在嵌套对象中使用Order\u细节的方式来看,连接已经存在,并且您使用的连接是冗余的

 var result = from order in orders
                     select new OrderVm
                     {
                         OrderId = order.OrderID,
                         OrderDetails = order.Order_Details.Select(x =>
                         new OrderDetailVm
                         {
                             OrderId = x.OrderID,
                             UnitPrice = x.UnitPrice,
                             Quantity = x.Quantity,
                             ProductId = x.ProductID
                         })
                     };

从嵌套对象中使用Order_Details的方式来看,连接已经存在,并且使用的连接是冗余的

 var result = from order in orders
                     select new OrderVm
                     {
                         OrderId = order.OrderID,
                         OrderDetails = order.Order_Details.Select(x =>
                         new OrderDetailVm
                         {
                             OrderId = x.OrderID,
                             UnitPrice = x.UnitPrice,
                             Quantity = x.Quantity,
                             ProductId = x.ProductID
                         })
                     };

可以分别为这两个表提供数据吗?可以分别为这两个表提供数据吗?我添加了sql where以缩小结果set@TroyBryant好的,如果没有必要,你可以把它撕下来。这是否回答了这个问题,或者你正在寻找更多的细节?对不起,这不是我想要的。每个订单都有订单详细信息,应该是一个对象数组。啊,您使用的是“orderDetail”,在嵌套对象中应该使用“x”。我假设因为您的关系设置,因为您在订单对象中使用“订单详细信息”。因此,如果您放弃orderDetail,请使用x连接并切换出orderDetail,这可能会使您更接近您想要的位置。啊,刚刚得到itI添加sql where只是为了缩小结果set@TroyBryant好的,如果没有必要,你可以把它撕下来。这是否回答了这个问题,或者你正在寻找更多的细节?对不起,这不是我想要的。每个订单都有订单详细信息,应该是一个对象数组。啊,您使用的是“orderDetail”,在嵌套对象中应该使用“x”。我假设因为您的关系设置,因为您在订单对象中使用“订单详细信息”。所以,如果你摆脱了orderDetail,加入并用x替换orderDetail,这可能会让你更接近你想要的位置