我有一张表格,其中包含各种燃料类型的燃料价格数据。每行都有一个 ID、日期,并且有 5 列用于不同的燃料类型。我无法提出一个 linq 查询来确定值不是 0 的每种燃料类型的最后一行数据的日期(如果插入了一行并且特定燃料类型没有可用的燃料价格,则插入的值因为该燃料类型为零,因为单元格不可为空)。
我尝试使用 LastorDefault 但这不起作用,因为有时特定类型的最后日期不在表的最后一行中。
我有一张表格,其中包含各种燃料类型的燃料价格数据。每行都有一个 ID、日期,并且有 5 列用于不同的燃料类型。我无法提出一个 linq 查询来确定值不是 0 的每种燃料类型的最后一行数据的日期(如果插入了一行并且特定燃料类型没有可用的燃料价格,则插入的值因为该燃料类型为零,因为单元格不可为空)。
我尝试使用 LastorDefault 但这不起作用,因为有时特定类型的最后日期不在表的最后一行中。
可以为它配备一个 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;}
}
如果可以,请规范您的数据库设计。这将使查询变得容易得多。