我在面试时被问到一个问题。如何使用从datareader返回的数据填充您的自定义对象。
我的答案是使用datareader.read(),创建自定义对象的实例,并使用datareader值设置属性。
面试官很不高兴。他说,如果我有数百万条记录,那么使用我的方法填充这些记录将非常缓慢。他让我给他推荐另一种方法。
除了这个还有没有别的办法。请发表意见。
发布于 2009-12-29 17:44:35
您的方法是完全有效的,并在许多地方使用。现在,如果您有数百万条记录,您可能无论如何都不会喜欢填充内存中的对象。但我猜这将取决于您将如何处理对象。如果面试官说他不想循环这些记录,那么这就违背了数据阅读器的目的。
发布于 2009-12-29 17:51:28
您是否建议将业务对象存储在某种内存数据结构中?如果是这样的话,面试官可能对这样一种解决方案感兴趣:在生成器方法中实例化对象,然后使用yield return
将对象返回给使用者
发布于 2009-12-29 18:05:21
这真的取决于场景-那里没有足够的需求,但有一些想法:
yield return
)避免了必须缓冲所有数据的ILGenerator
等,或Expression
),或者像HyperDescriptor这样的东西,如果他们想要一个集合,可以从反射Count
,除非你的TSQL返回这个第一个https://stackoverflow.com/questions/1973765
复制相似问题