C 多DataTable表連線操作類

2021-09-12 03:10:25 字數 2179 閱讀 7449

using system;

using system.collections;

using system.data;

/// /// 將主從表進行左連線操作

///

/// 主表

/// 從表

/// 關聯字段

/// 子表要合併的字段

/// 合併後的表

public datatable leftjointabel(datatable maintable, datatable subtable, string keyfields, string megerfields)

foreach (string keyfield in keyfields)

if (!maintable.columns.contains(keyfield))

if (!subtable.columns.contains(keyfield))

}foreach (string megerfield in megerfields)

if (!subtable.columns.contains(megerfield))

}if (maintable.rows.count * subtable.rows.count < 5000)

else

else}}

/// /// 巢狀迴圈方式。當主從表都足夠小,迴圈總次數不超過5000時,可免去建立雜湊表的開銷。

///

public datatable nestjoin(datatable maintable, datatable subtable, string keyfields, string megerfields)

maintable.columns.add(newcolumn);

}//合併表

bool same;

foreach (datarow mainrow in maintable.rows)

}//若一致才合併

if (same)}}

}return maintable;

}/// /// 雜湊查詢方式。當從表比較小,列數少於5且記錄數少於1萬時,可直接把所有行存入雜湊表,就無需再查詢從表。

///

public datatable hashjoin(datatable maintable, datatable subtable, string keyfields, string megerfields)

value = new string[megerfields.length];

for (int i = 0; i < megerfields.length; i++)

//雜湊表儲存主鍵和實際行內容

hashtable.add(key, value);

}//新增主表列

datacolumn newcolumn;

foreach (string colname in megerfields)

maintable.columns.add(newcolumn);

}//合併表

foreach (datarow row in maintable.rows)

if (hashtable.containskey(key))}}

return maintable;

}/// /// 雜湊索引方式。當從表比較大時,只在雜湊表儲存索引,找根據索引到從表查詢記錄,可避免建立過大的雜湊表。

///

public datatable indexjoin(datatable maintable, datatable subtable, string keyfields, string megerfields)

//雜湊表儲存主鍵和行索引

hashtable.add(key, rowindex);

rowindex++;

}//新增主表列

datacolumn newcolumn;

foreach (string colname in megerfields)

maintable.columns.add(newcolumn);

}//合併表

foreach (datarow row in maintable.rows)

if (hashtable.containskey(key))}}

return maintable;}}

}

連線兩個DataTable表

在c 中把兩個datatable連線起來,相當於sql的inner join方法 public static datatable join datatable first,datatable second,datacolumn fjc,datacolumn sjc datacolumn parent...

C 鍊錶 實操

一 鍊錶的基礎操作 1.定義乙個鍊錶 struct listnode 2.建立乙個基礎鍊錶 長度為n listnode create normal list int n end next null 尾節點最後指向乙個新的空位址 head last null 頭節點的前一位不存在 return hea...

Ue4 C 載入DataTable資料表

實現資料驅動遊戲性元素 ue4中使用資料表 data table ue4使用c 載入datatable資料表 ue4 根據配置讀取datatable配表 ue4 根據配置讀取datatable配表 開始時先建立乙個自定義格式的資料表,位置隨意都可,我是建立了乙個新類來進行管理。編譯後就可進行建立表了...