3

私は2つのテーブルを持っています:

tbl_ClassFac: ClassFacNo (主キー) ,FacultyID ,ClassID

tbl_EmpClassFac: EmpID、(主キー) DateImplement、(主キー) ClassFacNo

特定の ClassFacNo にいるすべての従業員を知りたいです。すなわち。特定の 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)

コードがあまり良くないことは知っていますが、それが私が考えることができるすべてです。誰か提案があれば教えてください。データテーブル内のすべての行をデータ行配列にコピーする方法を教えてください???

4

1 に答える 1

3

「データテーブル内のすべての行をデータ行配列にコピーする方法は?」

それが役立つ場合はSelect、パラメーターなしでのオーバーロードを使用してください

DataRow[] rows = table.Select();

DataTable.Select()

すべての DataRow オブジェクトの配列を取得します。

あなたの質問の残りの部分によると、質問が何であるかは実際には明確ではありません。

しかし、2番目の(関連する)テーブルのフィールドの値で最初のテーブルをフィルタリングしたいと思います。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
于 2013-01-27T21:45:13.323 に答える