【发布时间】:2012-09-06 04:51:01
【问题描述】:
在实体框架中,您可以像这样即时运行和绑定自定义查询...
protected class NitrogenMoisutreContainer
{
public double MinN { get; set; }
public double MaxN { get; set; }
public double MinM { get; set; }
public double MaxM { get; set; }
}
// ...
var q = dbcontext.Database.SqlQuery<NitrogenMoisutreContainer>(@"SELECT MAX(NitrogenBalance) as MaxN, MIN(NitrogenBalance) as MinN, MAX(FCWaterPercent) as MaxM, MIN(FCWaterPercent) as MinM
FROM agZoneProjectionGrowthStages
WHERE NitrogenBalance > 0 AND FCWaterPercent > 0").First();
问题是,对我来说,这感觉很混乱。我必须为一个查询创建这个类,我永远不会再将它用于其他任何事情。结果在执行位置的下一行使用。
有没有办法可以返回匿名类型?即使我必须先声明它,像这样......
var anonItem = new {
MinN = 0d,
MaxN = 0d,
MinM = 0d,
MaxM = 0d
};
var q = dbcontext.Database.SqlQuery<anonItem.GetType()>("...");
我只是不知道如何将我的匿名类型的Type 传递为T。有可能吗?
【问题讨论】:
-
我认为这是不可能的,因为泛型是在编译时确定的。
-
@Matthew 这是可能的,虽然它很老套。至于有没有好的方法,我不知道。
-
@Matthew 而发布的答案甚至是我自己争论的答案。现在我们都吓坏了。
标签: c# entity-framework anonymous-types