使用linq从表中获取最新日期

时间:2012-12-02 23:06:59

标签: linq-to-entities

我有一张表格,其中包含各种燃料类型的燃料价格数据。 每行都有一个id,date,并且有5列用于不同的燃料类型。 我无法想出一个linq查询来确定每个燃料类型的最后一行数据的日期,其中值为0(如果插入了一行并且没有燃料价格可用于特定燃料类型,则插入的值由于电池不可空,燃料类型为零。

我尝试使用LastorDefault,但有时不能使用特定类型的最后日期不在表格的最后一行。

1 个答案:

答案 0 :(得分:0)

可以为它设置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;}
}

如果可以,请规范化您的数据库设计。这将使查询变得更加容易。