如何在 IEnumerable 对象中执行 foreach

How to Preform foreach in a IEnumerable object

我有一个包含多个值的 IEnumerable 列表,我想 foreach 超过它的值。我有这个代码

IEnumerable<object> Place = db.Places.Select(x => new { Id = x.Id, Nam1 = x.Name1, Name2 = x.Name2);

foreach(dynamic thisPlace in Place) 
{
    Response.Write (thisPlace.Id)
    Response.Write (thisPlace.Name1)
    Response.Write (thisPlace.Name2)
}

这段代码工作正常,完成后,它抛出一个错误:

A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.Place_F6C785C74658C47ED4BFCF45D13FE7D754CCA2F688B6CBDD079244CE52B46291'."

现在的问题是如何以正确的方式将 foreachIEnumerable 结合起来?

首先,你的代码不会被执行。因为您没有像代码中显示的那样将 属性 命名为 Name1

其次,即使你有你也应该使用var而不是使用IEnumerable<object>

var Places = db.Places.Select(x => new { Id = x.Id, Nam1 = x.Name1, Name2 = x.Name2}).ToList();
foreach (var thisPlace in Places)
{
  Response.Write(thisPlace.Id)
  Response.Write(thisPlace.Name1)
  Response.Write(thisPlace.Name2)
}