【问题标题】:foreach statement cannot operate on variables of type 'int' because 'int' does not contain a public definition for 'GetEnumerator'foreach 语句不能对“int”类型的变量进行操作,因为“int”不包含“GetEnumerator”的公共定义
【发布时间】:2013-12-20 21:21:20
【问题描述】:

我正在尝试使用 Entity Framework 执行存储过程来填充列表,但由于存储过程参数之一是 int,因此遇到了问题。

这是我的代码:

string param1 = "param1";
int param2 = 1;

List<MyEntity> myEntities = new List<MyEntity>();

using (MyEntities ctx = new MyEntities())
{
    foreach(MyEntity myEntity in ctx.FindMyEntity(param1, param2)    
    {
        myEntities.Add(myEntity);
    }
}

这给了我以下错误:

foreach 语句无法对“int”类型的变量进行操作,因为“int”不包含“GetEnumerator”的公共定义

我有一个几乎相同的类似 sn-p 代码,但第二个参数是一个字符串。它可以完美运行并返回预期的结果。

如何使用 int 参数完成这项工作?

【问题讨论】:

  • 你能贴出FindMyEntity函数的代码吗?
  • ctx.FindMyEntity(string,int) 返回什么?听起来它返回了一个int,在这种情况下:quelle 惊喜?

标签: c# entity-framework foreach


【解决方案1】:

但我遇到了问题,因为存储的 proc 参数之一是 int

不,您遇到问题是因为 ctx.FindMyEntity(string,int) 返回 int。正如编译器非常正确地所说:你不能foreach 超过那个。检查 ctx.FindMyEntity 是否正在返回,而不是您认为它应该返回的内容。

【讨论】:

  • 呃......你是绝对正确的。它的返回类型设置为 (none),但我认为我已将其设置为不同的值。一旦正确设置了返回类型,一切都运行良好。非常感谢您指出我的错误! :)
猜你喜欢
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2016-03-27
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多