无法将类型'System.Collections.Generic.IEnumerable <dynamic>'隐式转换为'int'</dynamic>

时间:2012-03-03 17:54:41

标签: c# sql-server

我的代码:

int key = 0;
            //get primary key of inserted row
            key = db.Query("SELECT max(event_id) FROM event where title=" + cevent.title +  "AND description=" + cevent.description + "AND event_start=" + cevent.start  + "AND event_end=" + cevent.end);

错误讯息:

  

无法隐式转换类型   'System.Collections.Generic.IEnumerable'到'int'

我正在使用C#,WebMatrix和SQL Server。 WebMatrix中。如果我尝试运行ExecuteScalar而不是Query,我会得到

  

'WebMatrix.Data.Database'不包含。的定义   '的ExecuteScalar'

有谁知道我可以做些什么来修复我的代码?

2 个答案:

答案 0 :(得分:1)

听起来你想要Database.QueryValue

// No need to declare it beforehand...
int key = (int) db.QueryValue(...);

与上一个问题一样,您绝对应该 将查询参数值嵌入到SQL中。

Database.QueryValue记录为:

  

执行一个SQL查询,返回单个标量值作为结果。

......听起来对我来说完全正确。值得浏览文档 - 它们不是很详细,但它至少会告诉你什么是可用的。

答案 1 :(得分:0)

您的key是整数,您无法转换整数System.Collections.Generic.IEnumerable,作为消息代码。

如果您确定只有一个结果,请写下这样的内容:

 key = (int)db.Query("SELECT max(event_id) FROM event where title=" + 
                           cevent.title +  "AND description=" + 
                           cevent.description + "AND event_start=" + 
                           cevent.start  + "AND event_end=" + cevent.end).
                           FirstOrDefault();

应该足够了。