如何将数据表中的所有行复制到数据行数组
本文关键字:复制 数据 数组 数据表 | 更新日期: 2023-09-27 17:56:19
我有两个表:
tbl_ClassFac:类法克号(主键),教师ID,类号
tbl_EmpClassFac:EmpID,(主键)日期实现,(主键)类法克号
我想知道所有在特定 ClassFacNo 上的员工。所有具有特定类FacNo的EmpID...我所做的是首先使用用户提供的 EmpID 搜索tbl_EmpClassFac。我存储这些数据行。然后使用这些数据行中的 ClassFacNo 搜索tbl_ClassFac。以下是我的代码。
empRowsCF = ClassFacDS.Tables["EmpClassFac"].Select("EmpID='" + txt_SearchValueCF.Text + "'");
int maxempRowsCF = empRowsCF.Length;
if (maxempRowsCF > 0)
{
foundempDT = ClassFacDS.Tables["ClassFac"].Clone();
foreach (DataRow dRow in empRowsCF)
{
returnedRowsCF = ClassFacDS.Tables["ClassFac"].Select("ClassFacNo='" + dRow[2].ToString() + "'");
foundempDT.ImportRow(returnedRowsCF[0]);
}
}
dataGrid_CF.DataSource = null;
dataGrid_CF.DataSource = foundempDT.DefaultView;
***returnedRowsCF = foundempDT.Rows;*** // so NavigateRecordsCF can be used
NavigateRecordsCF("F"); // function to display data in textboxes (no importance here)
我知道代码不是很好,但这就是我能想到的。如果有人有任何建议,请告诉我。如果没有,请告诉我如何将数据表中的所有行复制到数据行数组???
"如何将数据表中的所有行复制到数据行数组?"
如果有帮助,请使用不带参数的Select
重载
DataRow[] rows = table.Select();
DataTable.Select()
获取所有 DataRow 对象的数组。
根据你的其余问题:实际上不清楚问题是什么。
但我假设您想按第二个(相关)表中的字段值过滤第一个表。您可以使用以下简洁Linq-To-DataSet
查询:
var rows = from cfrow in tbl_ClassFac.AsEnumerable()
join ecfRow in tbl_EmpClassFac.AsEnumerable()
on cfrow.Field<int>("ClassFacNo") equals ecfRow.Field<int>("ClassFacNo")
where ecfRow.Field<int>("EmpId") == EmpId
select cfrow;
// if you want a new DataTable from the filtered tbl_ClassFac-DataRows:
var tblResult = rows.CopyToDataTable();
请注意,如果数据行序列为空,则CopyToDataTable
可能会收到异常,因此筛选器未返回任何行。您可以通过以下方式避免它:
var tblResult = rows.Any() ? rows.CopyToDataTable() : tbl_ClassFac.Clone(); // empty table with same columns as source table