我有一个mysql表,其中包含具有唯一ID的条目,然后是3个属性。
我在ListBox中显示ID,其他信息在我的页面的其他部分。它经常被重复使用,每次我需要引用它时我都不想再做一次查询。我的问题是:我应该使用什么样的数据结构来保存行数据?
二维数组是最佳选择吗?如果是这样,使用Hashtable的样式是不好的,其中键是ID,而值是对包含该行的所有值的数组的引用?
我正在使用.NET 4,并在C#中编码。
答案 0 :(得分:6)
模型看起来适合代表一行:
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表。然后,您当然会有一个存储库,其中包含允许您根据Id
或其他条件获取单个模型并获取所有模型的方法。然后将此模型绑定到GUI。
答案 1 :(得分:0)
最好的选择是从中创建一个业务对象类,并将其作为List传递。
如果您只需要在小应用中使用原始数据,也可以使用内置的DataTable类。
答案 2 :(得分:0)
我会将它们存储在一个包含DataTable的DataSet中。如果出现这种情况,则返回多个数据表并将其存储在一个数据集中。更多信息:http://msdn.microsoft.com/en-us/library/ms978448.aspx#bdadotnetdata4_topic2c
答案 3 :(得分:0)
我不喜欢你设置Hashtable的方式,因为一系列值可能有点草率。如果你想以这种方式绑定,我会更多地瞄准Hashtable。但是,在某种程度上,您不必进入此级别,因为您可以设置任何可以使用IEnumerable和bind的对象类型。例如:
List<ObjectType> myList = new List<ObjectType>();
当您绑定到对象上的一个属性然后根据过滤器(LINQ to Entities?)显示时,您可以根据用户的过滤器重用数据。
一个可能的警告是观察您在Web服务器端保存的数据的大小,特别是如果它以“每会话”类型为基础加载,因为您可能最终消耗大量内存来处理所有可能的用户选择。哎哟!