我有cars
的桌子和树视图,因此用户可以选择多辆车并查看详细信息
问题是,如果用户选择了许多车辆,这一行会导致StackOverflow
(不是意图打算)。
有1300辆汽车。在这种情况下,id[]
有720个整数。 163 id的工作正常。
IEnumerable<car> cresult = db.cars.Where(c => id.Any(s => s == c.car_id)).ToList();
^^^
int []
使用一个大型数组过滤我的表的最佳方法是什么?
错误:
答案 0 :(得分:2)
您应该使用Contains
而不是Any()
并进行自己的比较。
IList<car> cresult = db.cars.Where(c => id.Contains(s => c.car_id)).ToList();
此外,在您明确完成将其转换为列表的工作后,投射到IEnumerable<car>
可能不是一个好主意。
为了进一步提高性能,您可以考虑使用HashSet<int>
而不是int[]
- 尽管如此,如果将其转换为SQL查询,它可能不会有太多(如果有的话)获得。