[quote=引用 25 楼 oLanJieKou 的回复:] [quote=引用 15 楼 ltcszk 的回复:] IQuaryable只有展开的时候才会去查询数据库,比如tolist、toarray,foreach等等 where一个加一个,和拼接字符串一样是不会查询的
[quote=引用 15 楼 ltcszk 的回复:] IQuaryable只有展开的时候才会去查询数据库,比如tolist、toarray,foreach等等 where一个加一个,和拼接字符串一样是不会查询的
IQuaryable只有展开的时候才会去查询数据库,比如tolist、toarray,foreach等等 where一个加一个,和拼接字符串一样是不会查询的
LINQ分页效率和直接用SQL完全等同,如果忽略接口开销的话。我不是说LINQ效率高,是这样的。 如果数据库支持RowNumber,那么LINQ会将Take Skip转化成where RowNumber > .. and < ... 这样的SQL执行,如果数据库不支持,LINQ会查出足够多的数据,然后再得到需要的。这也就是说,效率高不高和你用什么数据库(当然LINQ Provider也要支持)有关。
[quote=引用 7 楼 oLanJieKou 的回复:] [quote=引用 6 楼 imfor 的回复:] 都答非所问! EF分页也没什么问题,唯一的就是查询了所有字段,比如你有个content字段内容有1w字,这时候就有性能问题了。 所以查询的时候要select new 你查询的几个字段。但这样写法又不太简洁了。
[quote=引用 6 楼 imfor 的回复:] 都答非所问! EF分页也没什么问题,唯一的就是查询了所有字段,比如你有个content字段内容有1w字,这时候就有性能问题了。 所以查询的时候要select new 你查询的几个字段。但这样写法又不太简洁了。
你需要了解一下LINQ的延迟查询特性先 var q = from r in XXentities.XXX select r; 此时q里是没有数据的。 只有执行到 q.skip().take()时,才会去数据库取一页数据并返回
使用skip()结合take()方法在LINQ里实现数据分页,效率上不比数据库分页差
不需要,skip(pageindex).take(10)这样分页就可以。不是所有数据.
都答非所问! EF分页也没什么问题,唯一的就是查询了所有字段,比如你有个content字段内容有1w字,这时候就有性能问题了。 所以查询的时候要select new 你查询的几个字段。但这样写法又不太简洁了。
62,243
社区成员
668,998
社区内容
加载中
.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。
希望和大家一起共同营造一个活跃、友好的社区氛围。
试试用AI创作助手写篇文章吧