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

C# Casting item from SqlConnection to expose available items

我有一个 SQL 查询,由于存储过程包含一个主元 table,我使用纯 ADO.NET(不是 Entity Framework)直接在代码中调用它根据参数输入,它可能 return 可变数量的列。

我已经到了可以从查询中获取行数据列表的阶段,并且在调试时,如果我深入了解基本属性,我可以看到该对象包含 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 上使用智能感知显示 EqualsGetTypeToString.

等通用属性

谢谢

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

要找出列名,请使用 queryDataGetName() 方法,要获取类型,请使用 GetFieldType():

Type t = queryData.GetFieldType(i);

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