[问题] 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