我有一些我想要使用的数据。两个字符串和两个数字,我说8000行数据。
数据集是这里使用的最佳选择,还是我可以使用结构并拥有结构列表?
列表和数据集之间会有很大的性能差异吗?
答案 0 :(得分:6)
DataSet
和DataTable
通常更详细,并且有一些访问开销,但通常可与您正在使用的任何数据绑定类型的内容互操作。
如果您有选择(即您没有使用某些使用DataTable
的组件),我强烈建议您使用适当的强类型集合,例如通用List
,{ {1}}或Dictionary
。我建议,如果您的项目有很长的路要走,那么从长远来看,灵活性和透明度将使您受益。
P.S。两个字符串和两个数字足够大,我怀疑你会看到它是SortedDictionary
而不是一个类的任何好处。当然,你应该为自己描绘一下,但那是我的直觉。我同意帖子提到你应该确定你理解两者之间的根本区别,如果这是一个过早优化的情况。
答案 1 :(得分:3)
好的,我是根据有限的数据进行推断,但你在结构列表和数据集之间询问这一事实对我来说意味着你对C#有些新意,并且没有被介绍到这样一个事实: struct是ValueType,因此存在于堆栈中。你可能听说过一个结构可以让你在某个地方获得“更好的性能”,并希望获得8000项目最佳性能。
首先,我相信你过早地进行了优化。别。做任何在你的程序范围内工作的东西。如果您以编程方式自己构建8000个项目列表,可能来自XML或平面文件,我建议您使用 对象 列表,因为这将是最容易编程。您的帖子并不意味着您在两个表格数据集之间存在关系,因此不需要DataSet。
也就是说,如果您以某种方式从数据库接收该列表,并且您当前的数据层是ADO.NET 2.0(因此返回DataSet和DataTables),那么我会说使用它。如果您从数据库接收列表但尚未定义数据层,我建议您查看LINQ to SQL或Entity Framework。
同样,我提醒您不要过早地进行优化,特别是考虑到您似乎不了解结构是如何工作的。这是一个假设,如果我错了,我会提前道歉。
答案 2 :(得分:0)
取决于“与...合作”对您意味着什么。如果我在DataGridView或其他控件中显示数据,我会选择DataSet / DataTable路由。为您提供轻松过滤数据的能力。
同样,List与DataSet的性能差异取决于您正在做什么。列表非常适合迭代容器和那种性质的东西。 DataSets和DataTables提供了简单的操作,例如ReadXML()(假设您已经获得了XML中的数据),它将获取您的元素,创建列并为您填充行。这很方便。
除非你在相当严格的硬件上运行或者其他线程/进程有很多其他事情,否则8000个项目实际上并不是非常大量的数据。我根据我打算用它做的事情选择我的容器。如果我使用数据绑定,我会选择DataSet。