2016-12-03 5 views
2

IEnumerableリストに複数の値を持つリストがあり、その値にはforeachが必要です。今の質問はIEnumerableで正しい方法をforeachを行う方法であるforeachをIEnumerableオブジェクトでプレフォームする方法

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

:私はこのコード

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) 
} 

このコードは正常に動作しており、それが行わだ後、それはエラーがスローされますか?

+0

使用varの代わりを使用する必要があります持っている場合でも? – Sajeetharan

+0

それは間違っている私はそれを変更します – khaled

+0

あなたはいくつかのC#の本を読むと良いです。 IEnumerableの代わりにvarを使用する場合。次に、動的変数ではなくループ変数として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

関連する問題