繁体   English   中英

我应该使用什么样的数据结构?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM