我有一些函数的原型看起来像这样:public void doThings(string sql, dynamic dParams);
它使用这些参数进行一些SQL查询。虽然我不是这个函数的作者,但我需要用到它。当我像这样操作时,它可以正常工作:
doThings("select * from SomeTable where myval1=@v1 and myval2=@v2",
new
{
v1 = new Dapper.DbString()
{
Value = "yay",
IsAnsi = true,
Length = 50
},
v2 = new Dapper.DbString()
{
Value = "really",
IsAnsi = true,
Length = 32
}
});
但是当我第一次将动态参数放入ExpandoObject中时会出现问题:
dynamic dynParams = new ExpandoObject();
dynParams.v1 = new Dapper.DbString()
{
Value = "yay",
IsAnsi = true,
Length = 50
}
doThings("query here", dynParams);
查询结果为空。我不想调用doThings()
并为可能需要查询myval2
或myval3
等十种不同情况编写new
块十次。我应该以某种特殊的方式传递ExpandoObject
,还是通常应该以其他方式进行操作?