我有一个 storeprocdure 返回集合的情况,但我不知道对象的结构,因为查询是非常动态的。
一个查询可以返回:
Id | Location | MarketSegment | ... n columns
另一个可以返回
Id | Sales Rep | Location | Region | ... n columns
正如您在下面的代码中所见,我只是简单地返回了一个“对象”。我知道这行不通,但我该如何设置它呢?
using (DbContext db = new Context())
{
var items = db.Database.SqlQuery<object>(
"SP @Param1, @Param2",
new SqlParameter("Param1", ped),
new SqlParameter("Param2", 25)
).ToList();
return Request.CreateResponse<List<object>>(HttpStatusCode.OK, items);
}
编辑:
我不知道展示 SP 是否有帮助,除非我能解释得更多。
每一列都表示为自定义字段。用户可以创建 n 个自定义字段。因此,如果您为 User1 运行 SP,并且他有 5 个自定义字段,那么每个自定义字段将在列中表示,但如果 User2 有 3 个自定义字段,则只会表示 3 列。我无法控制的是自定义字段名称和自定义字段的数量。
最佳答案
如果使用 SQL 2016 或更新版本,请将“FOR JSON AUTO”添加到您的查询中以作为 JSON 返回,例如:
var json = db.Database.SqlQuery<string>("Select x, y, z FROM tbl FOR JSON AUTO").First();
然后使用Json.Net创建动态对象使用
var myDynamic = JObject.Parse(json)
关于c# - 如何从 SQL 查询返回动态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494384/