我想编写一个通用处理程序,可以为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)));
}
}