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 FormLeven : Form { public FormLeven() { InitializeComponent(); } /// /// Расстояние Левенштейна /// /// Первая строка /// Вторая строка /// Расстояние Левенштейна между двумя строками static int Levenshtein(string txt1, string txt2) { string t1 = txt1.ToLower().Trim(); string t2 = txt2.ToLower().Trim(); 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(); /// /// Отобразить весь список тканей /// private void BtnShowAll_Click(object sender, EventArgs e) { DgvTkani.Rows.Clear(); foreach (string Tkan in LstTkani) DgvTkani.Rows.Add(Tkan); } /// /// На момент открытия формы сформировать список с названиями тканей /// и заполнить DataGridView /// private void FormLeven_Load(object sender, EventArgs e) { SqlConnection con = new SqlConnection("Data Source=213.155.192.79,3002;Initial Catalog=СlothesFactoryLG;Persist Security Info=True;User ID=u21lebed;Password=hgm8"); con.Open(); string TxtQuery = "select Title from Tkan"; SqlCommand query1 = new SqlCommand(TxtQuery, con); // выполнить запрос SqlDataReader res = query1.ExecuteReader(); while (res.Read()) LstTkani.Add(res["Title"].ToString()); con.Close(); BtnShowAll_Click(sender, e); } /// /// Поиск с учетом расстояния Левенштейна /// 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); } } }