PDA

View Full Version : مشکل تبدیل جستجوی پیشرفته در ADO به حالت linq



abyar_fm
پنج شنبه 02 آذر 1391, 18:35 عصر
سلام دوستان عزیزم.

از مهـــــــــــندسین گــــــرامی
خواهـــــــــشمندم حوصله کنید سوالم رو بخونید و جواب بدین اگر بلد هستید!
ثواب داره بخدا، کار مردمو راه بندازید!! پیشاپیش متشکرم.

من میخوام جستجو را بر اساس 4 فیلد (کد-نام-فامیل-تلفن)به صورت ترکیبی انجام بدم.به صورتی که وقتی دو رقم از کد ومثلا یک یا دوحرف از اسم یا فامیل را وارد کردم همه کسانی که مشخصاتشان این شرایط را داشت جستجو کند.(همون سرچ پیشرفته )کد را دارم وقبلا نوشتم اما کامل نمیتونم به linq تبدیل کنم.

private void txt_telephne_TextChanged(object sender, EventArgs e)
{
string sql;
sql = " SELECT * FROM vw_paziresh where ";

if (txt_codeparvande.Text != string.Empty)
sql = sql + "id_bimar like N'" + txt_codeparvande.Text + "%' and ";
if (txt_name.Text != string.Empty)
sql = sql + "name like N'" + txt_name.Text.Trim() + "' and ";
if (txt_family.Text != string.Empty)
sql = sql + "family like N'" + txt_family.Text.Trim() + "%' and ";
if (txt_telephne.Text != string.Empty)
sql = sql + "telephon like N'" + txt_telephne.Text + "%' and ";
sql = sql + " 1=1 ";

con = new SqlConnection(constring());
com = new SqlCommand(sql, con);
if (con.State == ConnectionState.Closed)
con.Open();
com.ExecuteNonQuery();
da = new SqlDataAdapter(sql, con);
ds = new DataSet();
da.Fill(ds, "bimar");
dataGridView1.DataBindings.Clear();
dataGridView1.DataBindings.Add(new Binding("DataSource", ds, "bimar"));
con.Close();
}


این کد رو در رویداد TextChanged چهار فیلد تکرار کردم.

این کد تبدیل شده به Linq


private void txt_family_s_EditValueChanged(object sender, EventArgs e)
{

if (txt_name_s.Text != string.Empty)
{
Grid_Pezeshk.DataSource = db.bimars.Where(c => c.name.Substring(0, txt_name_s.Text.Length) == txt_name_s.Text);
}
if (txt_family_s.Text != string.Empty)
{
Grid_Pezeshk.DataSource = db.bimars.Where(c => c.family.Substring(0, txt_family_s.Text.Length) == txt_family_s.Text);
}
if (Txt_telephon.Text != string.Empty)
{
Grid_Pezeshk.DataSource = db.bimars.Where(c => c.telephon.Substring(0, Txt_telephon.Text.Length) == Txt_telephon.Text);
}
if (txt_code_s.Text != string.Empty)
{
Grid_Pezeshk.DataSource = db.bimars.Where(c => c.id_bimar.ToString().Substring(0, txt_code_s.Text.Length) == txt_code_s.Text);
}
{


مشکل این کد این هست که فقط بر اساس یک فیلد جستجو میکنه و query دو فیلد را باهم && نمیکنه!...
یعنی نمیدونم چطـــــــــــــــــــــــ ــــــــــور این کار رو بکنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟ یعنی باید شرایط تمام if ها مثل کد اول با هم && شوند.
:افسرده::گریه:
خواهش میکنم جواب بدید.

Mahmoud.Afrad
پنج شنبه 02 آذر 1391, 23:24 عصر
http://barnamenevis.org/showthread.php?&p=1565318&viewfull=1#post1565318