c# - 如何将数据表中的所有行复制到数据行数组?

标签 c# datatable datarow

我有两个表:

tbl_ClassFac: ClassFacNo(主键) ,教师编号 ,类号

tbl_EmpClassFac: EmpID,(主键) DateImplement,(主键) 类FacNo

我想知道特定 ClassFacNo 上的所有员工。 IE。所有具有特定 ClassFacNo 的 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()

Gets an array of all DataRow objects.

根据您的其余问题:实际上并不清楚问题是什么。

但我假设您想通过第二个(相关)表中的字段值来过滤第一个表。您可以使用这个简洁的 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

关于c# - 如何将数据表中的所有行复制到数据行数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552595/

相关文章:

c# - 如何计算一个值/值在数据表中出现的次数

r - 将列名称传递给 Shiny 数据表中的目标选项

c# - 如何将数据添加到 C# DataTable

c# - 从文件中修剪函数,以便仅剩下的字符是函数名称和参数

c# - 其他进程的 GetKeyboardLayoutName?

c# - Reflection Get List<> from List<T>(来自通用容器类型的容器类型)

C# DataTable ItemArray 返回 '{}' - 如何测试空值?

c# - 加载同一程序集的多个版本

c# - 检查数据表中是否存在行?

javascript - ASP 语句中的多个 "