| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace СУБД_Швейная_фабрика{    public partial class FormLevenshtein : Form    {        public FormLevenshtein()        {            InitializeComponent();        }        /// <summary>        /// Расстояние Левенштейна        /// </summary>        /// <param name="t1">Первая строка</param>        /// <param name="t2">Вторая строка</param>        /// <returns>Расстояние Левенштейна между двумя строками</returns>        static int Levenshtein(string t1, string t2)        {            int CntLev = Math.Abs(t1.Length - t2.Length);            // перебор до последнего символа более короткой строки            for (int i = 0; i <= Math.Min(t1.Length, t2.Length) - 1; i++)            {                if (t1[i] != t2[i])                    CntLev++;            }            return CntLev;        }        List<string> LstTkani = new List<string>();        /// <summary>        /// На момент открытия формы сформировать список с названиями тканей        /// и заполнить DataGridView         /// </summary>        private void FormLevenshtein_Load(object sender, EventArgs e)        {            SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);            con.Open();            string TxtQuery = "select nametkan from Tkani";            SqlCommand query1 = new SqlCommand(TxtQuery, con);            // выполнить запрос            SqlDataReader res = query1.ExecuteReader();            while (res.Read())                LstTkani.Add(res["nametkan"].ToString());            con.Close();            BtnShowAll_Click(sender, e);        }        /// <summary>        /// Отобразить весь список тканей        /// </summary>        private void BtnShowAll_Click(object sender, EventArgs e)        {            DgvTkani.Rows.Clear();            foreach (string Tkan in LstTkani)                DgvTkani.Rows.Add(Tkan);        }        /// <summary>        /// Поиск с учетом расстояния Левенштейна        /// </summary>        private void BtnFind_Click(object sender, EventArgs e)        {            DgvTkani.Rows.Clear();            foreach (string Tkan in LstTkani)                if (Levenshtein(Tkan, TbxFind.Text) <= 3)                    DgvTkani.Rows.Add(Tkan);        }    }}
 |