无法隐式转换类型';System.Collections.Generic.IEnumerable<;动态>

本文关键字:Generic Collections IEnumerable gt 动态 lt System 转换 类型 | 更新日期: 2023-09-27 18:26:47

我的代码:

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.IENumberable"到"int"

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

"WebMatrix.Data.Database"不包含的定义"ExecuteScalar"

有人知道我能做些什么来修复我的代码吗?

无法隐式转换类型';System.Collections.Generic.IEnumerable<;动态>

听起来您需要Database.QueryValue

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

和您之前的问题一样,您绝对应该而不是在SQL中嵌入查询参数值。

Database.QueryValue记录为:

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

这听起来很对。浏览这些文档是值得的——它们不是很详细,但它至少会向你展示可用的内容。

您的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();

对你来说应该足够了。

相关文章: