数据表转对象的方法
将数据从数据表获取到其相应对象的好方法是什么?我猜有一种比我目前的方法更有效、更干净的方法:
var username = dt_user.rows[0].columns[0];
谢谢!
What's a good way to get data from a datatable to its corresponding object? I'm guessing there's a more efficient and cleaner method than how I'm currently doing it:
var username = dt_user.rows[0].columns[0];
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可能会受益于这篇文章中的帮助程序类:http://lozanotek.com/blog/archive/2007/05/09/Converting_Custom_Collections_To_and_From_DataTable.aspx
You might benefit from the helper class in this post: http://lozanotek.com/blog/archive/2007/05/09/Converting_Custom_Collections_To_and_From_DataTable.aspx
查看 System.Data.DataSetExtensions 中的扩展。它为 DataRow 提供了一个通用扩展方法 Field 和各种重载。
真正的力量来自于访问可为空的原始类型:
更多信息可以在此处找到:
http://msdn.microsoft.com/en-us/library /system.data.datarowextensions.aspx
Check out the extensions in System.Data.DataSetExtensions. It provides a generic extension method Field with various overloads for DataRow.
The real power comes when accessing nullable primative types:
More information can be found here:
http://msdn.microsoft.com/en-us/library/system.data.datarowextensions.aspx
如果您知道所需的数据类型;你可以完美地对字符串执行此操作:
对整数执行此操作:
尽管这仍然很丑陋。我会这样编写几个扩展方法:
然后我会这样称呼它:
还有一个建议:如果不需要,请不要使用索引访问列名;您可以完美地说
dt_user.rows[0]["username"].ToString();
如果有人更改结果中特定列的位置,这将保护您免受意外结果/错误的影响放。
if you know the data type you expect; you can perfectly do this for strings:
and this for ints:
Although that's still ugly. I would write a couple extension methods as so:
And then I would call it like this:
One more suggestion: Don't access column names by using the index if you don't have to; you can perfectly say
dt_user.rows[0]["username"].ToString();
And that will guard you from unexpected results/errors in case someone changes the position of a particular column in your result set.