[英]What kind of data structure should I use?
我有一个 mysql 表,其中包含具有唯一 ID 的条目,然后是 3 个属性。
我在 ListBox 中显示 ID,其他信息出现在我页面的其他部分。 它经常被重复使用,以至于我不想每次需要引用它时都进行另一个查询。 我的问题是:我应该使用什么样的数据结构来保存行数据?
二维数组是最佳选择吗? 如果是这样,使用键是 ID 并且值是对包含该行所有值的数组的引用的 Hashtable 是不是很糟糕?
我正在使用 .NET 4,并在 C# 中进行编码。
model 看起来适合表示一行:
public class Foo
{
public string Id { get; set; }
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
}
和IEnumerable<Foo>
代表您的 SQL 表。 然后,您当然会有一个存储库,其中包含允许您获取单个 model 的方法(给定它的Id
或其他标准)并获取所有模型。 然后将此 model 绑定到您的 GUI。
最好的选择是从中创建一个业务 object class 并将其作为列表传递。
如果您只需要小应用程序中的原始数据,也可以使用内置的 DataTable class。
我会将它们存储在包含 DataTable 的 DataSet 中。 如果出现这种情况,将返回多个数据表并将其存储在一个数据集中。 更多信息: http://msdn.microsoft.com/en-us/library/ms978448.aspx#bdadotnetdata4_topic2c
我不喜欢您设置 Hashtable 的方式,因为值数组可能有点草率。 如果您想以这种方式绑定,我会更多地针对 Hashtable。 但是,从技术上讲,您不必将 go 设置到此级别,因为您可以设置任何可以使用 IEnumerable 和绑定的 object 类型。 例子:
List<ObjectType> myList = new List<ObjectType>();
当您绑定到 object 上的一个属性,然后根据过滤器(LINQ to Entities?)显示时,您可以根据用户的过滤器重用数据。
一个可能的警告是注意您在 web 服务器端持有的数据的大小,特别是如果它是基于“每个会话”类型加载的,因为您最终可能会消耗大量 memory 来处理所有可能的用户选择。 哎哟!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.