我必須加載和使用我的數據從數據庫。數據表示如下:爲我的數據採集集合
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