我有一個DataTable [有5列]來自數據庫的數據。 我需要通過此組合表調用一個組,並創建2個表...其中一個使用groupedBy行和其他具有項目。 什麼是最快的方式來做到這一點在C#代碼? 另外,我已經編寫了下面的代碼來爲這兩個表添加列。是否正確?創建數據表
繼承人我的代碼:
string colName = "ACCOUNT_ID";
var allRows = combinedTable.AsEnumerable();
var accountRowGroups = allRows.GroupBy(row => row[colName]);
DataTable masterDataTable = new DataTable();
DataTable childPricesDataTable = new DataTable();
// Create the columns
DataColumnCollection pdCols = combinedTable.Columns;
for (int ndx = 0; ndx < pdCols.Count; ndx++)
{
string columnName = pdCols[ndx].ColumnName;
Type type = Type.GetType(pdCols[ndx].DataType.ToString());
masterDataTable.Columns.Add(columnName, type);
childPricesDataTable.Columns.Add(columnName, type);
}
感謝jeremy輸入。我想提一下,我已經使用DataRelation對象來綁定2個表[即。 masterDataTable和childPricesDataTable]到一個infragistics網格,但整個事情是非常緩慢的。因此,我正在尋找一種更快的方式在C#中。另外,當你說我可以用sql來代替時,你的意思是我從我的sql返回2個表比1組合表,然後使用DataRelation對象在網格中顯示它們? – Jimmy
此外,@ duffymo談到在sql中結合2個表並返回需要的東西...如果我需要使用sql,那麼正如你在我上面的評論中可以看到的那樣,我將不得不發送2個表[master&child] 1,然後使用DataRelation對象在網格中顯示它們...你還會建議我使用sql嗎? – Jimmy
您好@Jimmy,因爲你必須綁定兩個網格「一個用groupedBy行和其他有項目」 - 我會創建一個存儲過程並返回兩個SELECT,一個分組依據和另一個沒有分組。然後,我將使用此處描述的「使用NextResult檢索多個結果集」的DataReader.NextResult()方法http://msdn.microsoft.com/en-us/library/haa3afyz.aspx將這兩個網格僅綁定一次數據庫。當在SQL中執行JOIN操作時,尤其是當數據庫增長時,整個事情會更快。 HTH –