首先看如下代码,问:在执行该代码之后,变量_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,这样的话,就会仅得到当时的查询结果,后续使用该结果集也不会再触发查询。