samiasoft
چهارشنبه 29 دی 1400, 22:49 عصر
سلام وقت بخیر
برای اینکه کلمه موردنظر را در دیتابیس جستجو کنم به کمک انتیتی فریمورک به این صورت دستور رو نوشتم :
var searchRecords = (from rows in database.tbl_sama
where rows.title.Contains(txt_search.Text)
select new
{
rows.id,
rows.codeNumber,
rows.title,
}).ToList();
dbGridView.DataSource = searchRecords;
اما متاسفانه در نتایج جستجو موارد نامرتبط هم دیده میشه ! که هدفم این بود فقط ردیف هایی که شامل کلمه "زلزله" باشه را بدست بیارم.
https://s20.picofile.com/file/8446632200/1.jpg
ایا این مشکل بخاطر استفاده از Contains هست ؟
برای حل مشکل بصورت موقت اومدم از کوئری اسکیوال استفاده کردم بدین شکل
var records2 = db.tbl_sama
.SqlQuery("select * from tbl_sama where title like '%" + txt_search.Text + "%' ")
.ToList();
dataGridView_standards.DataSource = records2;
و همانطور که مشاهده میکنید بدرستی نتایج نمایش داده میشه.
https://s20.picofile.com/file/8446632226/2.jpg
اما بدون استفاده از کوئری اسکیوال راه حل دیگری هم وجود داره ؟
خاطرم هست چندسال پیش هم همین مشکل را مطرح کرده بودم ولی متاسفانه با جستجو تاپیک مربوطه را پیدانکردم.
روشی هم در این صفحه گفته شده که کلمات را با split جداکنیم و ... را هم تست کردم اما باز هم همان مشکل را دارد .
https://entityframework.net/knowledge-base/51368670/sql-word-wide---like---search-in-entity-framework-6-using-lambda-expression
برای اینکه کلمه موردنظر را در دیتابیس جستجو کنم به کمک انتیتی فریمورک به این صورت دستور رو نوشتم :
var searchRecords = (from rows in database.tbl_sama
where rows.title.Contains(txt_search.Text)
select new
{
rows.id,
rows.codeNumber,
rows.title,
}).ToList();
dbGridView.DataSource = searchRecords;
اما متاسفانه در نتایج جستجو موارد نامرتبط هم دیده میشه ! که هدفم این بود فقط ردیف هایی که شامل کلمه "زلزله" باشه را بدست بیارم.
https://s20.picofile.com/file/8446632200/1.jpg
ایا این مشکل بخاطر استفاده از Contains هست ؟
برای حل مشکل بصورت موقت اومدم از کوئری اسکیوال استفاده کردم بدین شکل
var records2 = db.tbl_sama
.SqlQuery("select * from tbl_sama where title like '%" + txt_search.Text + "%' ")
.ToList();
dataGridView_standards.DataSource = records2;
و همانطور که مشاهده میکنید بدرستی نتایج نمایش داده میشه.
https://s20.picofile.com/file/8446632226/2.jpg
اما بدون استفاده از کوئری اسکیوال راه حل دیگری هم وجود داره ؟
خاطرم هست چندسال پیش هم همین مشکل را مطرح کرده بودم ولی متاسفانه با جستجو تاپیک مربوطه را پیدانکردم.
روشی هم در این صفحه گفته شده که کلمات را با split جداکنیم و ... را هم تست کردم اما باز هم همان مشکل را دارد .
https://entityframework.net/knowledge-base/51368670/sql-word-wide---like---search-in-entity-framework-6-using-lambda-expression