【发布时间】:2012-10-05 07:58:04
【问题描述】:
我有一个如下所示的查询:
var orderLines = from Order order in _orders
join OrderItem orderItem in dbc.OrderItems
on order.OrderId equals orderItem.OrderId
join Product product in dbc.Products
on orderItem.ProductId equals product.ProductId
join OrderItemQuantity oiq in dbc.OrderItemQuantities
on orderItem.OrderItemId equals oiq.OrderItemId
into orderItemQuantities
join ActivityQuantity aq in dbc.ActivityQuantities
on orderItem.OrderItemId equals aq.OrderItemId
into activityQuantities
orderby
order.OrderId ascending,
orderItem.OrderLineNumber ascending
select new {
Order = order,
Item = orderItem,
Product = product,
// I'd like to get these child items as IEnumerables or similar
ItemQuantities = orderItemQuantities,
ActivityQuantities = activityQuantities
};
这编译得很好,但会导致查询中缺少 orderItemQuantities 和 activityQuantities 部分,所以我得到一个用于订单/项目/产品的选择/加入/加入,并在 OIQ/AQ 上单独选择对于每个条目:
SELECT (...) FROM [ORDERS] AS t0
INNER JOIN [ORDER_ITEMS] AS t1 ON t0.ORDER_ID = t1.ORDER_ID
INNER JOIN [PRODUCTS] AS t2 ON t1.PRODUCT_ID = t2.PRODUCT_ID
ORDER BY (...)
然后,对于这些行中的每一行,它执行以下查询:
SELECT (...) FROM [ACTIVITY_QUANTITY] as t0
WHERE t0.ORDER_ITEM_ID = @p0
SELECT (...) FROM [ORDER_ITEM_QUANTITY] as t0
WHERE t0.ORDER_ITEM_ID = @p0
由于我有数万行,这会导致大量查询。
有没有办法将OrderItem 的OrderItemQuantity 和ActivityQuantity 条目合并到IEnumerable(或类似的)中,以便从选择中使用的匿名类型轻松访问它们?
【问题讨论】:
标签: c# linq linq-to-sql ienumerable