2009-08-12 7 views
1

J'ai une requête (en développement LINQPad):Linq to Entities Left Outer Join/Sous-requête?

DateTime currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); 
DateTime previousMonth = currentDate.AddMonths(-1); 
DateTime previousMonthForAveragePrices = currentDate.AddMonths(-2); 


var help = from cd in CostDrivers.OfType<Commodity>() 
            where cd.isActive == true && 
            cd.arePricesCalculatedAverage == false 
            from cp in cd.CostDriverPrices where cp.priceDate 
== currentDate 
            select new {cd.costDriverID, cd.costDriverName, cd.isUpdatedMonthly, cd.arePricesCalculatedAverage, 
               cp.costDriverPriceID, priceDate = cp.priceDate, 
               cp.price, previousPriceDate = from cpc in cd.CostDriverPrices where cpc.priceDate == previousMonth 
               select new {previousPrice = cpc.price, previousPriceDate = cpc.priceDate}}; 

help.Dump();

Ce que je dois faire est de renvoyer TOUS les costDrivers indépendamment du fait qu'un enregistrement de prix existe à la date donnée (currentDate). Je devrais signaler qu'il y a une tentative de sous-requête pour saisir un autre record de prix pour un currentDate -1 mois. J'ai essayé || null etc. pas aller. C'est linq aux entités. La requête elle-même fonctionne .. elle ne retournera que le résultat là où il y a un prix. Merci!

merci.

Répondre