将[new {CompanyID = 1}]添加到[params object []参数|],但循环返回长度,长度,等级



我想编写一个通用处理程序,可以为SQL命令使用任何参数。

我尝试了此代码:

DataTable dt = GetDt("Select * from Company where CompanyID = @CompanyID", new { CompanyID = 1 });

称之为此功能:

public static DataTable GetDt(string commandText, params object[] parameters)

然后在此功能中,它循环遍历所有参数:

        var Params = new List<SqlParameter>();
        foreach (var PropInfo in parameters.GetType().GetProperties())
        {
            Params.Add(new SqlParameter(PropInfo.Name, PropInfo.GetValue(parameters, null)));
        }

除外,它没有将propinfo.name作为" companyid",它通过类型列表运行:

[0] Length
[1] LongLength
[2] Rank
[3] Syncroot
[4] IsReadOnly
[5] IsFixedSize
[6] IsSynchronized

我该如何循环参数中的列表?

您的参数是对象的数组(object[]),因此当您调用GetType().GetProperties()时,您会通过 array array 的属性进行循环,而不是对象的属性中。尝试使参数成为简单的object,因此:

public static DataTable GetDt(string commandText, object parameters)
{
    ...
    foreach (var PropInfo in parameters.GetType().GetProperties())
    {
        Params.Add(new SqlParameter(PropInfo.Name, PropInfo.GetValue(parameters, null)));
    }
}

最新更新