2011-10-12 37 views
3

在下面的例子中,在foreach應用的更改不會被保留,當我返回集合:即在foreach內的foreach變化沒有被保存下來了LINQ項目收集

var people = SomeLinqToSqlSource(); 

foreach (var person in people) 
{ 
    person.Name = "Jimmy"; 
} 

return people.AsQueryable(); 

這違揹我的理解(..) ,您在當前項目上按引用操作。

有沒有人請讓我知道我要去哪裏錯了?

謝謝。

回答

7

的問題是,peopleIQueryable,當您返回它和消費者列舉的結果是重新查詢 - 現在你更新的屬性都消失了,因爲每個person實例由執行查詢重建。

如果你想保留使用ToList()你必須先兌現你的數據的變化,即再返回列表爲IEnumerable(或IList

+0

謝謝!我現在知道了。我已經實現了我的數據 - 現在都在工作。 – christofr