【发布时间】:2016-03-20 14:41:04
【问题描述】:
我有一些这样的 sql 函数(用 C# 编写):
public void Query(string sqlText, ExpandoObject paramSet) {
SqlCommand cmd = new SqlCommand(...)
foreach (var item in paramSet) {
cmd.Parameters.AddWithValue(item.Key, item.Value);
}
var reader = cmd.ExecuteReader(...);
...
}
并且想这样调用:
dbHandler.Query("SELECT * FROM ... WHERE loginID = @loginID", new { loginID = "username" });
我想使用 ExpandoObject 来保存参数集的原因是:
1.ExpandoObject实现了IDictionary接口,可以避免反射;
2.我不想写额外的行来声明一个新的 Dictionary 对象来存储值(传递匿名类型会减少编码)。
但是编译器报错如下:
cannot convert from '<anonymous type: string loginID>' to 'System.Dynamic.ExpandoObject'
有没有办法解决这个问题? :P
【问题讨论】: