我能找到(在任何地方)将 SQL 查询的结果转换为局部变量的最佳解决方案是使用 NULLList<dynamic>
或IEnumerable<dynamic>
变量声明。
通过执行以下操作创建变量:
@{
IEnumerable<dynamic> myVariable = null;
}
然后该变量可以从数据库查询中获取一个值,例如:
@{
try
{
Database db = Database.Open("name"); // name of connectionString configured in web.config
string myQuery = "EXEC dbo.Get_Results @Param1=@0, @Param2=@1";
myVariable = db.Query(myQuery, @Param1, @Param2);
db.Close();
db.Dispose();
}
catch (Exception ex)
{
// Do something
}
这使我可以执行以下操作:
@if(myVariable != null)
{
foreach (var row in myVariable)
{
// Do something
}
}
这工作得很好,但我仍然好奇的是如何使用 来做同样的事情,作为使用我使用它的方式List<dynamic>
的替代方法。IEnumerable<dynamic>
我使用的List<dynamic>
等效解决方案是IEnumerable<dynamic>
什么?
我知道我的问题本身很简单,但是当我尝试创建一个可以从预先声明的变量中接收结果的类时,我花了很长时间才试图解决无法隐式转换错误。db.Query(commandText)
所以我想我应该提供更多细节,以防其他人试图找出相同或相似的东西。我IEnumerable<dynamic>
在不相关的主题上找到了我的解决方案,这让我看到了我试图解决的问题的更简单的解决方案。