首先看如下代码,问:在执行该代码之后,变量_resultList集合中会有几个子项:
List<int> _testNumList = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int _tiaoJian = 0;
var _searchResult = from _x in _testNumList
where _x >= _tiaoJian
select _x;
_tiaoJian = 9;
List<int> _resultList = _searchResult.ToList();
答案是1个
那么在看如下代码,问:在执行该代码之后,变量_resultList集合中会有几个子项:
List<int> _testNumList = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int _tiaoJian = 0;
var _searchResult = (from _x in _testNumList
where _x >= _tiaoJian
select _x).ToList();
_tiaoJian = 9;
List<int> _resultList = _searchResult.ToList();
答案是10个
为什么会有这样的区别?因为如果你直接用变量获取linq查询的结果集,那么在之后的代码中每次调用该结果集变量,都会再次触发查询,如果你不想这样,就将linq查询的结果集转为list,这样的话,就会仅得到当时的查询结果,后续使用该结果集也不会再触发查询。
当使用变量存储LINQ查询结果时,如果不转换为List,后续访问会重复执行查询。将查询结果转换为List可以固定查询结果,避免多次执行。
1292

被折叠的 条评论
为什么被折叠?



