无效的表达式术语Where

时间:2015-01-20 19:42:57

标签: linq

我遵循LINQ声明:

from o in Orders
                    join od in OrderDetails on o.OrderNumber equals od.OrderNumber
                    join r in RMAs on o.OrderNumber equals r.OrderNumber
                    join rd in RMADetails on r.RMAnumber equals rd.RMAnumber
                    from i in Inventory 
                    where( a => ( od.SKU == a.LocalSKU)).DefaultIfEmpty()//error is here
                    where (r.Status != "Pending" && od.Adjustment == false)
                    select new
                    {
                        r.Status,
                        o.Name,
                        o.Company,
                        o.Address,
                        o.Address2,
                        o.City,
                        o.State,
                        o.Country,
                        o.Email,
                        o.Zip,
                        o.Phone,
                        o.ShipName,
                        o.ShipCompany,
                        o.ShipAddress,
                        o.ShipAddress2,
                        o.ShipCity,
                        o.ShipCountry,
                        o.ShipState,
                        o.ShipPhone,
                        o.ShipZip,
                        o.OrderNumber,
                        o.ShippingTotal,
                        OrderDate = o.OrderDate,
                        SerialNumbers = rd.SerialNumbers ?? "",
                        o.SourceOrderID

                    }

它正在给Invalid Where term。我想用什么LEFT OUTER JOIN有SQL等价left join Inventory i on od.SKU = i.LocalSKU

1 个答案:

答案 0 :(得分:1)

试试这个:

         var qry =  from o in Orders
                    join od in OrderDetails.Where(od=>od.Adjustment == false) on o.OrderNumber equals od.OrderNumber
                    join i in Inventory on i.LocalSKU equals od.SKU into grp
                    from g in grp.DefaultIfEmpty()
                    join r in RMAs.Where(r=>r != 'Pending') on o.OrderNumber equals r.OrderNumber
                    join rd in RMADetails on r.RMAnumber equals rd.RMAnumber
                    select new
                    {
                      //set of columns here
                    };