在实体框架中,您可以像这样运行和绑定自定义查询......
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
。有可能吗?
答案 0 :(得分:5)
如果您将其设置为可以推断类型,则可以执行此操作。 E.g。
public static IEnumerable<T> GetObjects<T>(T exampleItem, string sqlQuery) { ... }
var q = GetObjects(anonItem, @"");
我认为这有点hackish,我建议尝试另一种方法,比如实际创建命名类或使用元组。
答案 1 :(得分:2)
问题是,对我而言,这感觉很麻烦。我必须为一个查询创建此类,我将永远不再使用它来做任何其他事情。结果从执行位置开始只使用了一行。
我不认为这是一个问题。
有没有办法可以返回匿名类型?
您可以改为创建tuple。