linq(およびSQL)クエリをデバイス化できる場合があります。ただし、正規化された構造用に作成された言語で非正規化されたものを処理すると、通常、ネストされたステートメントが繰り返されて混乱します(そして効率の悪いクエリプランになります)。とにかく繰り返しがあるので、通常のforeachを使用して、できるだけ単純に保ちます。
var result = new FuelPriceSummary();
foreach(var price in context.FuelPriceData.OrderBy(p => p.Date).ToList())
{
if (price.Price1 > 0)
{result.Price1 = price.Price1; result.Date1 = price.date;}
if (price.Price2 > 0)
{result.Price2 = price.Price2; result.Date2 = price.date;}
if (price.Price3 > 0)
{result.Price3 = price.Price3; result.Date3 = price.date;}
if (price.Price4 > 0)
{result.Price4 = price.Price4; result.Date4 = price.date;}
if (price.Price5 > 0)
{result.Price5 = price.Price5; result.Date5 = price.date;}
}
可能であれば、データベース設計を正規化します。クエリがはるかに簡単になります。