[問題] Linq Selec new

作者: wind681201 (阿風~~)   2020-04-05 13:19:42
請問,若我想要修正某個list中的屬性如下
class a
{
int id{get;set;}
string name {get;set;}
}
然後我變成 List<a> d = from db in DataBase
selec {z=> new a{id = z + 1033, name =z.name}}
通常我是這樣做,但這樣,我有十萬筆的話,是不是,還是會跑十萬次?
有沒有比較有效率的做法?
同一個類別,我只想修正某個屬性而已。
這個例子可能不好,但重點是,我想修正list中,某個屬性而已
作者: ian90911 (xopowo)   2020-04-05 13:22:00
直接下sql
作者: CloudyWing (孤單ㄉ翼)   2020-04-05 14:18:00
你這樣寫,如果不會報錯,就表示他會幫你轉成SQL除非你的DataBase是IEnumerable而不是IQueryable如果DataBase是IQueryable,這段程式後面要加ToList()
作者: wind681201 (阿風~~)   2020-04-05 15:19:00
我的例子舉的不好,我用的是object跟資料庫沒關係我只是想在list中修改某個屬性,其它屬性不變
作者: CloudyWing (孤單ㄉ翼)   2020-04-05 15:38:00
十萬次是跑不定最多是讓他在列舉時跑十萬次或是改用非同步集合,用非同步跑那十萬次
作者: wind681201 (阿風~~)   2020-04-05 18:02:00
非同步集合?請問是什麼?
作者: okok24 (匿名人士)   2020-04-05 18:45:00
修改屬性用linq的.ForEach就好
作者: t64141 (榕樹)   2020-04-05 22:42:00
加一個屬性 int id2 {get { return id + 2003 }}使得 id2在讀取時再運算,但是如果你需要多次巡覽 list所有成員,就不適合
作者: vi000246 (Vi)   2020-04-06 10:47:00
直接改db的值吧 不然就在下sql時就先加好
作者: wind681201 (阿風~~)   2020-04-06 19:55:00
謝謝各位
作者: jinmin88 (晝伏夜出)   2020-04-09 17:01:00
SQL > UpdateRange >>>>>> FoorLoop Update
作者: Litfal (Litfal)   2020-04-10 14:31:00
這種複雜度10萬次根本小case
作者: APTON (瑋瑋)   2020-05-25 15:41:00
不放心的話,可以利用LINQPAD幫你轉成SQL看看阿

Links booklink

Contact Us: admin [ a t ] ucptt.com