DataTable转List优化遇问题:OfType<CustomtDetail>返回空列表求排查
问题原因及优化方案
- 根本问题:你用的
OfType<CustomtDetail>(注意拼写错误,应为CustomDetail)是用来从集合中筛选本身就是该类型的元素,但data.Rows里的所有元素都是DataRow类型,不存在任何CustomDetail实例,因此返回空集合是必然结果。 - 原代码的逻辑是用每个DataRow实例创建新的CustomDetail对象,但你替换后的代码完全跳过了对象转换步骤,只是做类型筛选,逻辑完全偏离。
正确的简化优化写法
如果想用LINQ简化代码同时提升性能,需要用Select方法完成投影转换:
AllDetails = data.Rows.OfType<DataRow>().Select(row => new CustomDetail(row)).ToList();
这里先通过OfType<DataRow>确保只处理合法的DataRow元素,再用Select将每个DataRow转换为CustomDetail对象,最后转为List,既和原代码逻辑一致,又能获得更好的性能表现。
另外注意你代码里的CustomtDetail多了一个t,属于拼写错误,需要修正后才能正常编译运行。
内容的提问来源于stack exchange,提问作者user8512043
相关产品推荐
相关产品推荐

