我想写一个genertic方法,让我回到一个聚合函数(ie. COUNT(), MAX(), MIN())
如何使用c#返回MySQL的聚合函数的结果?
问题是MIN()/MAX()
可以返回datetime, date, decimal, int.
所以我希望能够处理所有的值的值。我需要这个数字只返回一个值而不是多个列。
如何让此方法返回任何值?
// query the data base
public IEnumerable<T> getValue<T>(string query, List<MySqlParameter> pars)
{
double value;
using (var conn = new MySqlConnection(conn_string))
using (var cmd = new MySqlCommand(query, conn))
{
if (pars != null)
{
foreach (MySqlParameter p in pars)
{
cmd.Parameters.Add(p);
}
}
conn.Open();
try
{
value = Convert.ToDouble(cmd.ExecuteScalar());
} catch(Exception ex){
MessageBox.Show(ex.ToString(), "SQL Error", MessageBoxButtons.OK);
value = -1;
} finally {
conn.Close();
}
}
return value;
}
我正在逐渐'返回值的误差;''无法隐式转换类型 'T' 到 'System.Collections.Generic.IEnumerable'。存在明确的转换(你是否缺少一个转换?)'另外,'default(T)'做了什么? –
Jaylen
@Mike您需要将返回类型更改为T. default(T)会根据类型给出默认值。如果它是一个引用类型,则返回null,如果值类型将所有成员设置为其默认值。 –
尝试使用它时出现错误。这里是我如何使用它'int cnt =(int)(db.getValue(sSQL,parms1));'我正在传递一个COUNT(*)函数'错误方法'POS.dbConnetion .getValue(字符串,System.Collections.Generic.List )'不能从用法推断。尝试明确指定类型参数' –
Jaylen