PDA

View Full Version : جستجوی پیشرفته



aghayex
شنبه 03 فروردین 1392, 00:50 صبح
با سلام
دوستان من در نظر دارم در برنامم یه بخش جستجوی پیشرفته مثل جستجوی ویندوز قرار بدم و اطلاعاتم در دیتابیس sql هست و از تکنولوژی entity استفاده می کنم .
می خوام از قواعد جستجو یعنی * و ؟ استفاده کنم مثل :
ع؟ی که نتیجه ی اون باید یه کلمه سه حرفی باشه و اولش با ع و آخرش ی باشه
یا *لی که نتیجه ی اون باید کلمه باشه که آخرش لی باشه
یا عل*رضا که نتیجه ی اون باید کلمه باشه که اولش عل و آخرش رضا باشه
و ...
حالا با توجه به تکنولوژی entity که من استفاده می کنم اینو چطوری پیاده سازی کنم.

mze666
شنبه 03 فروردین 1392, 10:05 صبح
DataContext.Customers.Where(x => x.FirstName.StartsWith(""));

DataContext.Customers.Where(x => x.FirstName.EndsWith(""));

DataContext.Customers.Where(x => x.FirstName.Contains(""));

توجه داشته باشید که System.Linq رو باید به namespace هاتون اضافه کنید.

abolfazlab
شنبه 03 فروردین 1392, 10:55 صبح
سلام
private void txtSearch_TextChanged(object sender, EventArgs e)
{
ShopDataContext db = new ShopDataContext();
db.Connection.Open();
var SearchList = from rows in db.Categories
//کل
where rows.Name.Contains(txtSearch.Text)
//در ابتدا
//where rows.Name.StartsWith(txtSearch.Text)
//در انتها
//where rows.Name.EndsWith(txtSearch.Text)
select rows;
dataGridView1.DataSource = SearchList;
db.Connection.Close();
}

aghayex
شنبه 03 فروردین 1392, 11:28 صبح
ستتون درد نکنه اما اینها یه جستجوی در حد متوسط رو برای ما تولید می کنه اما اگه کاربر بخواد چنید جستجویی رو داشته باشه چی : ؟علی* یعنی کلمه ای باشه که حروف دو تا چهار اون علی باشه چطوری میشه پیاده سازیش کرد ؟

Iran58
شنبه 03 فروردین 1392, 12:10 عصر
ستتون درد نکنه اما اینها یه جستجوی در حد متوسط رو برای ما تولید می کنه اما اگه کاربر بخواد چنید جستجویی رو داشته باشه چی : ؟علی* یعنی کلمه ای باشه که حروف دو تا چهار اون علی باشه چطوری میشه پیاده سازیش کرد ؟
سلام
بنظرم جواب شوال شما کددومی باشد امتحان کنید

aghayex
شنبه 03 فروردین 1392, 13:31 عصر
دوست عزیز با این توابع می شه وضعیت های : *علی* و علی* و *علی رو درست کرد اما کامل نیست

_behnam_
شنبه 03 فروردین 1392, 15:30 عصر
سلام. اگه میخواید با همون علائم عبارات با قاعده در دیتابیس جستجو کنید
باید تمام رکورد های بانک رو یکی یکی با حلقه مقایسه کنید.

aghayex
شنبه 03 فروردین 1392, 18:14 عصر
این کار سربارگذاری زیادی رو به همراه داره .
ما قبلا با خود دستورات sql و عملگر like اینکارو به راحتی انجام می شد حالا با entity و این سه تابع نمیشه

plus
شنبه 03 فروردین 1392, 19:19 عصر
SqlFunctions.PatIndex (http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions.patinde x.aspx) رو بررسی کنید شاید جواب باشه.