1

このlinqクエリで立ち往生しているので、必要なのは最後の価格計算を最適化することだけです。これにより、約1000の記事が表示され、多くの売り上げが発生するため、処理が遅くなります...

var result = from article in db.Entities.Articles 
select new{
     article.ID_ART,
     article.Designation,
     article.BuyPrice,
     article.SellPrice,
     LastPrice = (from sale in article.Sales where sale.Date == article.Sales.Max(X => X.Date) select sale.Price).FirstOrDefault()==0?
     article.BuyPrice: (from sale in article.Sales where sale.Date == article.Sales.Max(X => X.Date) select sale.Price).FirstOrDefault()
     }
4

2 に答える 2

3
var result = from article in db.Entities.Articles 
    let lastPrice = (from sale in article.Sales 
                     orderby sale.Date descending 
                     select sale.Price).FirstOrDefault()
    select new
    {
        article.ID_ART,
        article.Designation,
        article.BuyPrice,
        article.SellPrice,
        LastPrice = lastPrice ==0 ? article.BuyPrice : lastPrice
    }
于 2012-07-30T05:43:28.803 に答える
1

joinまたはIncludeセールスのいずれかを行う必要があります。記事のナビゲーションプロパティなので、FKテーブルだと思います。

from article in db.Entities.Articles.Include("Sales")代わりに...を使用してください。

これにより、参照用の売上が読み込まれ、匿名タイプを初期化するときにサブクエリが実行されなくなります。

于 2012-07-30T05:40:41.773 に答える