两个List<int>集合list1,list2,
执行 var result=list1.Except(list2);
能否从 result 变量中判断运算后list1的元素数量【.toList()后用.Count可以知道,但希望在toList()前就判断,根据需要再决定是否进行toList()】?求解
执行 var result=list1.Except(list2);
能否从 result 变量中判断运算后list1的元素数量【.toList()后用.Count可以知道,但希望在toList()前就判断,根据需要再决定是否进行toList()】?求解
不行,只有Count()方法。所以才郁闷
首先ToList(),才能高效地Count()。当你执行Count(),也是枚举了所有对象。如果不ToList(),由于Linq的延迟加载特性,那么下一次可能会再一次重复执行查询,反而慢了一倍速度。如果先ToList(),不但不会让Count()变慢,更可以避免之后的集合操作重复执行查询。
尝试各种方法,就是想求一个高效的集合算法。
10万个List<int>集合,做except()运算竟然耗时将近一分钟。
方法语法是不会延迟执行的,只有查询表达式才会。
但是List的except()运算是生成一个新集合,考虑到把新集合存回list1会耗费时间,如果list1的元素没有改变,就可以免除这一步了。现在知道这样并不能提高性能。楼上有好的建议吗?
HashSet作集合运算是快些,但建立集合时却没有List快。正在权衡用哪个