2010-07-19 101 views
1

我正在努力解决(通常很容易处理)问题。无法将查询中的匿名返回类型转换为实体类型

我有一个包含“测量”表的数据库。每个度量都有一个时间戳(日期时间),一个值(十进制),一个度量类型(查找表的外键),属于“容量项目”(主表)。

我在实体框架中导入了SQL数据库并创建了一个模型。现在我想查询基线。基线是容量项目的当前状态,并且由每种类型的特定容量项目的最新测量结果表示。

那么查询需要返回的是:一定CapacityItem,给我每个测量类型的最新的测量。在SQL查询中,我会对测量类型执行“group by”,并在时间戳上执行MAX()。 但是在Linq-2-Entities中,我似乎在泥里sw sw。我需要一个返回IQueryable<Measurement>的函数,其中包含所有基线测量值,但是我的查询都返回某种匿名类型,这是不可能的。

我希望我明确自己。当我重新阅读这篇文章时,我可以想象它没有什么意义。但是,我一直在寻找这个时间太长了,我的心开始做有趣的事情:-)这里

任何人都可以让我在正确的方向?如有需要,请要求澄清。

非常感谢。

〜罗布

+0

如果您向我们展示您已有的一些代码,可能会更容易。这听起来像你可能需要在LINQ和实体框架上阅读一些内容。以下链接对我来说是无价的,并且充满了如何在LINQ查询中完成某些事情的示例。 http://msdn.microsoft.com/en-us/library/bb394939.aspx – Jagd 2010-07-19 14:41:31

+0

@jagd,你是对的,我是一个LINQ和EF新手,我低估了学习曲线。感谢您的链接。它已经在我的书签中了,但是;-) – 2010-07-19 14:47:20

回答

2

喜欢的东西:

var q = from m in Context.Measurements 
     group m by m.MeasurementType.Id into group 
     from bl in group 
     where bl.TimeStamp == group.Max(g => g.TimeStamp) 
     select bl; 

这是把我的头顶部,猜测你的数据库。你可能需要调整它。

+0

你几乎是现货!分组中存在一个错误(你不能命名一个组的组),我必须添加一个Where子句来筛选出所需的容量项,但总体思路正是我所需要的。它花了你5分钟?我希望我24小时前问你:-) – 2010-07-19 14:51:12