unote 書けば書くほどに

20230219

//2回実行あいまい検索
DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();

Console.WriteLine("実行...");

strSQL = "select * from DEPT";
Console.WriteLine(strSQL);
dt1 = OraTableSelect(strSQL);

//ALL
strSQL = "select DNAME from DEPT union select ENAME from EMP";
Console.WriteLine(strSQL);
dt2 = OraTableSelect(strSQL);

//検索ワードで全体から検索する
//DataTable dtResult =
//    dt2.AsEnumerable().Where(i => i["DNAME"].ToString().
//    Contains("UP")).CopyToDataTable();//dc.columunnamaeを入力

//word列追加する
dt1.Columns.Add("word");
//dt1.Rows[0]["word"] = "UP";

for (int m = 0; m < dt1.Rows.Count; m++)
{
    string str = dt1.Rows[m]["DNAME"].ToString();
    if (str.Length > 2)
    {
        dt1.Rows[m]["word"] = str.Substring(0, 2);
    }
    else
    {
        dt1.Rows[m]["word"] = str;
    }
}

//aimai列を追加
dt1.Columns.Add("aimai");

int Rcntdt1 = dt1.Rows.Count;
string strWord;

strWord = dt1.Rows[0]["word"].ToString();
ar=Xfunc();

strWord = dt1.Rows[ar+1]["word"].ToString();
ar=Xfunc();

datagrigridview=dt1;

void Xfunc()
{
    DataTable dtResult =
        dt2.AsEnumerable()
        .Where(i => i["DNAME"].ToString().Contains(strWord))
        .CopyToDataTable();

    int Rcntdtr = dtResult.Rows.Count;

    //wordで検索した結果の数分の行を追加
    for (int ar = 0; ar < Rcntdtr; ar++)
    {
        string strAimai = dtResult.Rows[ar][0].ToString();
        dt1.Rows[ar]["aimai"] = strAimai;

        DataRow dr1 = dt1.NewRow();
        if (ar < dtResult.Rows.Count - 1)
        {
            dt1.Rows.InsertAt(dr1, ar + 1);
        }
    }

    return ar;
}

//2つめ
int X = 6;
strWord = dt1.Rows[X]["word"].ToString();

dtResult =
    dt2.AsEnumerable()
    .Where(i => i["DNAME"].ToString().Contains(strWord))
    .CopyToDataTable();

Rcntdtr = dtResult.Rows.Count;

//wordで検索した結果の数分の行を追加
for (int ar = 0; ar < Rcntdtr; ar++)
{
    string strAimai = dtResult.Rows[ar][0].ToString();
    dt1.Rows[ar]["aimai"] = strAimai;

    DataRow dr1 = dt1.NewRow();
    dt1.Rows[X]["aimai"] = strAimai;
    if (ar < Rcntdtr - 1)
    {
        dt1.Rows.InsertAt(dr1, ar + 1);
    }
}