Optimizing a LINQ query

85 Views Asked by At

I have a LINQ query that is returning the results and format I desire, but it seems a bit slow. Wondering if there is a way to improve its performance? The Items and Skus records are 1:1. For each Item there 5 ItemWhse and 5 SkuWhse records for each Skus record.

var orderItems = from item in db.Items
            join sku in db.Skus
                on item.Sku equals sku.Sku
            where item.OrderNumber == 12345678
            select new
            {
                Item = item,
                ItemWhse = from itemWhse in db.ItemWarehouse
                          where itemWhse.OrderNumber == item.OrderNumber
                            && itemWhse.LineNumber == item.LineNumber
                          select itemWhse,
                Sku = sku,
                SkuWhse = from skuWhse in db.SkuWarehouse
                            where skuWhse.Sku == sku.Sku
                            select skuWhse
            };
1

There are 1 best solutions below

0
lobstar On

It might be slow because you are using subqueries. Try this out:

var orderItems = from item in db.Items
                             join sku in db.Skus
                                 on item.Sku equals sku.Sku
                             join itemWhse in db.ItemWarehouse
                                 on new { item.OrderNumber, item.LineNumber } equals new { itemWhse.OrderNumber, itemWhse.LineNumber }
                             join skuWhse in db.SkuWarehouse
                                 on item.Sku equals skuWhse.Sku
                             where item.OrderNumber == 12345678
                             select new
                             {
                                 Item = item,
                                 ItemWhse = itemWhse,
                                 Sku = sku,
                                 SkuWhse = skuWhse
                             };