我必须加载和使用我的数据从数据库。数据表示如下:为我的数据采集集合
group_id term
1 hello
1 world
1 bye
2 foo
2 bar
etc.
什么是一个好的C#集合来加载和使用这些数据?
我必须加载和使用我的数据从数据库。数据表示如下:为我的数据采集集合
group_id term
1 hello
1 world
1 bye
2 foo
2 bar
etc.
什么是一个好的C#集合来加载和使用这些数据?
看起来像你需要一个Dictionary<int, List<string>>
:
var dict = new Dictionary<int, List<string>>();
var dict.Add(1, new List<string> { "hello", "world", "bye" });
var dict.Add(2, new List<string> { "foo", "bar" });
酷我看起来不错,谢谢 – cdub
这一切都取决于你有收集要做什么,但它似乎像Lookup是万一一个很好的候选人,你通过GROUP_ID需要组。
如果你的数据是在一个DataTable:
var lookup = table.AsEnumerable().ToLookup(row => row.Field<int>("group_id"));
,然后访问组方式如下:
foreach (var group in lookup)
{
int groupID = group.Key;
IEnumerable<DataRow> groupRows = group;
}
+1:查找往往被忽视 –
要加载并从和您可以使用DataSet中的DB保存数据/ DataTable/DataRow类。 看看DataAdapter等取决于你的数据库服务器(MySQL,MsSQL,...)
如果你想使用对象我建议你的ORM EntityFramework(微软)或SubSonic。 http://subsonicproject.com/docs/The_5_Minute_Demo
与ORM,你可以使用LINQ查询是这样的:
// Define a query that returns all Department
// objects and course objects, ordered by name.
var departmentQuery = from d in schoolContext.Departments.Include("Courses")
orderby d.Name
select d;
它非常强烈地依赖于你需要用数据做什么。
如果您只需列出数据,请创建一个包含数据并使用List<Vocable>
的类。
public class Vocable
{
public int Group { get; set; }
public string Term { get; set; }
}
List<Vocable> vocables;
如果你需要查找属于一个组的所有条款,使用Dictionary<int, List<string>>
使用组ID键和条款值的列表。
如果您需要查找术语所属的组,请使用Dictionary<string, int>
,使用术语“作为键”和组ID作为值。
除了数据本身之外,数据结构的选择高度依赖于您想要如何使用数据。你会经常修改收藏吗?你会经常搜索特定的项目,还是大多数情况下你会通过每个项目?你会得到多少数据(不同的数据结构的缩放比例不同)。内存消耗是一个问题吗? – Servy