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(); } /// /// Расстояние Левенштейна /// /// Первая строка /// Вторая строка /// Расстояние Левенштейна между двумя строками 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 LstTkani = new List(); /// /// На момент открытия формы сформировать список с названиями тканей /// и заполнить DataGridView /// 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); } /// /// Отобразить весь список тканей /// private void BtnShowAll_Click(object sender, EventArgs e) { DgvTkani.Rows.Clear(); foreach (string Tkan in LstTkani) DgvTkani.Rows.Add(Tkan); } /// /// Поиск с учетом расстояния Левенштейна /// 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); } } }