我有一个表格,里面有各种燃料类型的燃料价格数据。每一行都有一个id、date,并且有5列对应于不同的燃料类型。我想不出一个linq查询来确定每个燃料类型的最后一行数据的日期,其中值不是0(如果插入了一行,并且特定燃料类型没有可用的燃料价格,则为该燃料类型插入的值为零,因为单元格不可为空)。
我尝试使用LastorDefault,但这不起作用,因为有时特定类型的最后日期不在表的最后一行。
发布于 2012-12-04 05:56:49
有可能为它设计一个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;}
}如果可以的话,规范化你的数据库设计。这将使查询变得更容易。
https://stackoverflow.com/questions/13674960
复制相似问题