我在面试中被问了一个问题。如何使用从datareader返回的数据填充自定义对象。
我的回答是使用datareader.read(),创建自定义对象的实例并使用datareader值设置属性。
面试官并不高兴。他说,如果我有数百万条记录,那么使用我的方法填写这些记录将非常缓慢。他让我建议其他方式。
除此之外还有其他方法。请评论。
答案 0 :(得分:5)
您的方法完全有效并且在许多地方使用。现在,如果你有数百万条记录,你可能不会想要填充内存中的对象。但我想这将取决于你将如何处理对象。如果面试官说他不想绕过这些记录,那么这就违背了数据读者的目的。
答案 1 :(得分:1)
您是否建议将业务对象存储在某种内存数据结构中?如果是这样,也许采访者对一个解决方案感兴趣,在这个解决方案中,对象在生成器方法中实例化并使用yield return
返回给消费者?
答案 2 :(得分:1)
这实际上取决于场景 - 那里没有足够的要求,但有些想法:
yield return
)避免必须缓冲所有数据ILGenerator
等,或Expression
),或类似HyperDescriptor之类的东西可以从反射中剔除Count
第一答案 3 :(得分:0)
我对这个问题的直接回答是,“你如何使用DataReader
返回的数据填充自定义对象?”是,“通过使用组合。”显然,面试官认为他在问一个不同而且不那么有趣的问题。