2016-12-03 46 views
2

我有一個IEnumerable列表,其中有多個值,我想要foreach超過它的值。我有這樣的代碼如何在一個IEnumerable對象中執行foreach 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的正確方法?

+0

什麼是旅行在這裏使用var代替? – Sajeetharan

+0

它的錯誤我會修改它 – khaled

+0

你最好閱讀一些C#書。 如果您使用var而不是IEnumerable 。那麼如果你使用var作爲循環變量而不是動態 - 一切都會好起來的。 你也想要.ToList()或.ToArray()你的枚舉。這是「最佳做法」。 –

回答

3

首先,你的代碼不會被執行。因爲您沒有如代碼中所示的屬性Name1

其次,即使你有,你應該使用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) 
} 
+0

請解釋你的答案,爲什麼這有所作爲? – Ehssan

+0

這段代碼工作正常以及我的代碼....但正如我所說的錯誤是在代碼執行完畢後...然後我找出問題的一些其他地方並解決它,謝謝 – khaled