我有一个存储过程,它的输入定义了返回的列。
如何遍历结果?
我尝试过类似的解决方案:
var selectColsParam = new System.Data.SqlClient.SqlParameter()
{
ParameterName = "@SelectCols",
Value = "Person.FirstName",
};
string sql = string.Format("dbo.DynamicResultSP {0} ", selectColsParam.ParameterName);
var result = db.Database.SqlQuery<List<dynamic>>(sql, selectColsParam);在最好的情况下,'result‘包含我可以迭代的正确行数,但'row’本身只是一个对象,我似乎不能对它做任何事情。
我不需要知道列名,但需要能够遍历字段。
我知道有一个根据输入返回不同列的存储过程不被认为是好的设计,但是,这是我必须使用的,所以更改SP是不可行的。
任何帮助我们都将不胜感激
发布于 2014-03-11 10:11:01
我在测试JsonResults时遇到了类似的问题。您可能会对我编写的一个little extension感兴趣,它允许您将object转换为动态,这将允许您挂钩到每个对象上的运行时动态绑定。
它可能看起来像这样:
var result = db.Database.SqlQuery<List<object>>(sql, selectColsParam);
var dynamicResults = result.Select(o => o.AsDynamic()).ToList();
foreach (dynamic item in dynamicResults)
{
// treat as a particular type based on the position in the list
}也有可能,您可能只需要将每个元素转换为适当的类型,这是基于您必须使用Convert或直接强制转换的逻辑来确定的。
https://stackoverflow.com/questions/22315003
复制相似问题