我有我直接在代码使用普通ADO.NET(未实体框架)调用SQL查询由于含有枢轴表,其可潜在地返回一个可变数目取决于参数输入列的存储过程。
我已经到了可以从查询中获取行数据列表的阶段,并且在调试时,如果我深入了解基本属性,我可以看到该对象包含我需要的2个属性(_fieldNameLookup
和_values
)。
我正在尝试访问这些值,但我不确定我是如何投射项目来公开我需要的属性。
C#查询如下:
using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Services"].ToString()))
{
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = "[SPROCQUERY]";
cmd.CommandType = CommandType.StoredProcedure;
var queryData = cmd.ExecuteReader();
var crei = new List<Items>();
while (queryData.Read())
{
for (int i = 0; i < queryData.FieldCount; i++)
{
var x = queryData[i]; <-- I am trying to expose values in this object
}
}
queryData.Close();
return null;
}
在var x
上使用intellisense会显示通用属性,例如Equals
,GetType
,ToString
。
由于
答案 0 :(得分:2)
queryData
是您的DbDataReader。引用默认属性上的索引只会返回列号的对象。
要查找列名称,请使用GetName()
的{{1}}方法,要获取类型,请使用queryData
:
GetFieldType()
要引用对象的属性 - 您需要将其强制转换为适当的类型。