1

クエリがあります(linqpadで開発中):

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();

私がする必要があるのは、指定された日付 (currentDate) に価格レコードが存在するかどうかに関係なく、すべての costDrivers を返すことです。サブクエリで currentDate -1 か月の別の価格レコードを取得しようとする試みがあることを指摘しておく必要があります。|| 試してみました || null などはダメです。これはエンティティへのリンクです。クエリ自体は機能します。価格がある場合にのみ結果が返されます。ありがとう!

ありがとう。

4

1 に答える 1

1

これは、Linq-To-Entities の左外部結合に役立つはずです

さらに、必要に応じて実際の SQL を EF に送信することもできると思います

http://msdn.microsoft.com/en-us/library/bb896272.aspx

于 2010-02-11T18:50:36.013 に答える