最近一直在用 Linq,Linq確定很方便,提供了一大堆的函數,可是就是沒有發現 Update 函數,杯具了。
說之前先看一個博友的文章:http://www.cnblogs.com/manupstairs/archive/2012/11/27/2790114.html
我忘記了他一直在說 SelectMany ,於是問他怎么更新數據。
比如我們考試會遇到這樣的情況,凡是60分以下的同學,都再原來的分數基礎上加1,照顧一下59分的同學
博主回答我的是:teachers.SelectMany(t => t.Students).ToList().ForEach(s => s.Score = s.Score + 1);
這個確實是一種解決方法,但經過 ToList 一次后,會不會對性能有所影響?我想應該會。
后來自己慢慢摸索,發現有一種變通的方法可以解決此問題:
teachers.SelectMany(t => t.Students).Where(s=>s.Score<60).Any(s=>(s.Score+=1)>0);
原來一切都很簡單!