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);
}
}
}