DataTablesvsIEnumerable我正在和另一个一起工作的程序员辩论。对于数据库返回类型,是否存在任何显着的内存使用或性能差异,或其他缺点,应该避免使用DataSets和DataTables以支持实现IEnumerable的类型......反之亦然我更喜欢返回实现IEnumerable的类型(List,T[]等),因为它更轻量级,在访问属性时强类型对象,允许有关基础类型的更丰富的信息等。虽然手动使用数据读取器,但它们需要更多时间来设置。现在懒惰是使用DataTables的唯一原因吗?无论是在内存需求方面,还是在创建/填充它们的处理器时间方面,数据表肯定比列表重得多。使用DataReader比使用DataTables快得多(虽然更冗长)(我假设您正在使用DataAdapter来填充它们)。就是说......除非这个地方真的很重要,否则你可能没问题,而且这两种方法都足够快,你可以在每种情况下选择更舒适的方法。(有时你想用很少的代码填充它们,有时你想用很少的代码阅读它们)我自己倾向于只在绑定到GridView时使用DataTables,或者当我需要同时激活多个结果集时。使用System.Collections类的另一个好处是更好的排序和搜索选项。我不知道有什么合理的方法可以改变DataTable的排序或搜索方式;您可以使用实现IComparable或IEquatable的集合类,并且可以完全自定义List.Sort和List.Contains的工作方式。此外,对于列表,您不必担心DBNull,因为我期待null并得到DBNull,因此不止一次地绊倒我。我还喜欢使用IEnumerable的事实,您可以使用方法和属性增强集合的基础类型,这使得实现更加优雅,代码更易于维护。例如FullName属性。如果超出您的控制范围,您还可以向此类添加扩展方法。publicclassSomeUser{publicstringFirstName{get;放;}publicstringLastName{get;放;}publicstringFullName{get{returnString.Format("{0}{1}",FirstName,LastName);}}}直接使用DataTable意味着将自己绑定到底层数据源及其布局方式。从可维护性的角度来看,这并不好。如果您的视图需要的只是一个对象列表,那么您应该只给它一个对象列表。我通过sql查到了大表,datatable比IEnumerable快多了。我在一个HTML页面中删除了一个包含26k行、25列的表格。Datatable耗时3秒,IEnumerable耗时9秒。我投票给数据表。除类型外,所有代码均相同。以上就是C#学习教程:DataTablesvsIEnumerable分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
