C#从SqlConnection转换项目以公开可用项

时间:2015-11-30 20:52:50

标签: c# sql-server ado.net sqlconnection

我有我直接在代码使用普通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会显示通用属性,例如EqualsGetTypeToString

由于

1 个答案:

答案 0 :(得分:2)

queryData是您的DbDataReader。引用默认属性上的索引只会返回列号的对象。

要查找列名称,请使用GetName()的{​​{1}}方法,要获取类型,请使用queryData

GetFieldType()

要引用对象的属性 - 您需要将其强制转换为适当的类型。