unote 書けば書くほどに

20230305

        private void button1_Click_1(object sender, EventArgs e)
        {
            //strSQL = strSQL_SEL + selTN;
            DataTable dtN = new DataTable();//全ての項目テーブル
            DataTable dtZ = new DataTable();//検索対象(NAME ALL)

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

            //全ての項目テーブル
            strSQL = "select * from NOUKI";
            Console.WriteLine(strSQL);
            dtN = OraTableSelect(strSQL);

            //検索対象(NAME ALL)
            strSQL = "select * from ZAIKO";
            Console.WriteLine(strSQL);
            dtZ = OraTableSelect(strSQL);

            //word列追加する
            dtN.Columns.Add("word");
            dtN.Columns.Add("aimai");
            dtN.Columns.Add("hantei");
            dtN.Columns.Add("LOT");
            dtN.Columns.Add("SNOUKI");
            dtN.Columns.Add("BIKOU");

            int NCnt = dtN.Rows.Count;

            string strWord;
            string strAimai;
            string strLot;

            string str;
            string target = "-";
            int tgtidx;
            int X=0;

            //検索ワード作成
            for (int m = 0; m < NCnt; m++)
            {
                str = dtN.Rows[m]["SZUBAN"].ToString();
                tgtidx = str.IndexOf(target);

                dtN.Rows[m]["word"] = str.Substring(tgtidx, str.Length-tgtidx);

            }

            for (int count = 0; count < NCnt; count++)
            {
                //strAimai = dtN.Rows[X]["SZUBAN"].ToString();
                //dtN.Rows[X]["aimai"] = strAimai;

                //あいまい検索
                strWord = dtN.Rows[X]["word"].ToString();

                DataRow[] ZAIZUrow =
                    dtZ.AsEnumerable()
                    .Where(i => i["ZZUBAN"].ToString()
                    .Contains(strWord)).ToArray();

                if (ZAIZUrow.Any())
                {
                    DataTable dtZAIZU = ZAIZUrow.CopyToDataTable();
                    int ZZCnt = dtZAIZU.Rows.Count;

                    //strAimai = dtZAIZU.Rows[0]["zzuban"].ToString();
                    //dtN.Rows[X]["aimai"] = strAimai;

                    if (ZZCnt == 1)
                    {
                        if (dtZAIZU.Rows[0]["ZZUBAN"] == dtN.Rows[X]["ZZUBAN"])
                        {
                            dtN.Rows[X]["hantei"] = "あり";
                        }

                        strAimai = dtZAIZU.Rows[0]["ZZUBAN"].ToString();
                        dtN.Rows[X]["aimai"] = strAimai;

                        //Add関数
                        dtN.Rows[X]["LOT"] = dtZAIZU.Rows[0]["LOT"].ToString();
                        dtN.Rows[X]["SNOUKI"] = dtZAIZU.Rows[0]["SNOUKI"].ToString();
                        dtN.Rows[X]["BIKOU"] = dtZAIZU.Rows[0]["BIKOU"].ToString();

                    }

                    if (ZZCnt >= 2)
                    {
                        dtN.Rows[X]["hantei"] = "あり";
                        int Y = X;//行を追加する前の行数を保持

                        strAimai = dtZAIZU.Rows[0]["ZZUBAN"].ToString();
                        dtN.Rows[X]["aimai"] = strAimai;

                        dtN.Rows[X]["LOT"] = dtZAIZU.Rows[0]["LOT"].ToString();
                        dtN.Rows[X]["SNOUKI"] = dtZAIZU.Rows[0]["SNOUKI"].ToString();
                        dtN.Rows[X]["BIKOU"] = dtZAIZU.Rows[0]["BIKOU"].ToString();

                        for (int ar = 1; ar <= ZZCnt - 1; ar++)
                        {
                            strAimai = dtZAIZU.Rows[ar]["ZZUBAN"].ToString();     //あいまいword

                            DataRow addrw = dtN.NewRow();
                            dtN.Rows.InsertAt(addrw, X + ar);//行追加(対象行,開始位置)

                            dtN.Rows[X + ar]["aimai"] = strAimai;
                            dtN.Rows[X + ar]["LOT"] = dtZAIZU.Rows[ar]["LOT"].ToString();
                            dtN.Rows[X + ar]["SNOUKI"] = dtZAIZU.Rows[ar]["SNOUKI"].ToString();
                            dtN.Rows[X + ar]["BIKOU"] = dtZAIZU.Rows[ar]["BIKOU"].ToString();
                        }

                        X = Y + ZZCnt;//次の行位置 
                    }
                    else
                    {
                        X++;
                    }

                }

                else
                {
                    dtN.Rows[X]["hantei"] = "なし";
                    X++;
                }
            }

            dataGridView1.DataSource = dtN;

        }