802883.jpg

Lotus

GF  2023-09-07 20:50
(战法天下第一!)

有没有精通linq的巨佬


想问一下是不是每次tolist()其实都是生成一个新的list,会消耗很多性能

比如有一个IQueryable类型的query

query = query.Where().toList();
query = query.OrderBy().toList();
return query;

是不是在Where那里如果先不写toList(),只在OrderBy那里写的话就相当于节省一次toList()的性能
如果是每次toList()都新生成的话,在几万条数据的时候会很影响性能吧

none.gif

wekine

B1F  2023-09-07 21:04
(都可以冲!!)
我上错论坛了?是的,你想的没错,源码如下:
private sealed partial class WhereListIterator<TSource> : Iterator<TSource>, IIListProvider<TSource>{
      public List<TSource> ToList()
      {
          var list = new List<TSource>();

          for (int i = 0; i < _source.Count; i++)
          {
              TSource item = _source;
              if (_predicate(item))
              {
                  list.Add(item);
              }
          }

          return list;
      }
  }


802883.jpg

Lotus

B2F  2023-09-07 21:21
(战法天下第一!)

回 1楼(wekine) 的帖子

要增加南+的多样性

无限轨道


surpass


91919

B5F  2023-09-08 17:06
    

5ee93661