C# 将sql更正为linq查询
我很难将此sql查询转换为linq查询。我正在尝试选择所有订单,并将订单详细信息附加到该订单。在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
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,这可能会让你更接近你想要的位置