PDA

View Full Version : جستجو در Entity



Abbas Naghdi
پنج شنبه 12 دی 1392, 19:25 عصر
سلام ... بچه ها کسی کد جستجوی در Entity
میخوام بر اساس چند فیلد و کلمه به کلمه جستجو انجام بشه ...
کسی کد یا آموزشی نداره ؟

khokhan
پنج شنبه 12 دی 1392, 20:07 عصر
سلام ... بچه ها کسی کد جستجوی در Entity
میخوام بر اساس چند فیلد و کلمه به کلمه جستجو انجام بشه ...
کسی کد یا آموزشی نداره ؟
چند جور می شه این کار رو انجام داد ،از طریقLambda Expressions بهتر به نتیجه می رسی و این خود نیز به دو شکل می شه اجراش کرد
1. با استفاده از شرط(if )

try
{
var dc = new DataClasses1DataContext();
var results = from i in dc.GetTable<tbl_service>()
select i;
if (comboBox1.Text == "کدراننده")
results = results.Where(r => r.codecar == Convert.ToInt16(textBox2.Text) && r.code_moshtarak == Convert.ToInt16(textBox1.Text));
if (comboBox1.Text == "مقصد")
results = results.Where(r => r.maghsad.Contains(textBox2.Text) && r.code_moshtarak == Convert.ToInt16(textBox1.Text));
if (comboBox1.Text == "تاریخ")
results = results.Where(r => r.date.Contains(textBox2.Text) && r.code_moshtarak == Convert.ToInt16(textBox1.Text));
dataGridView1.DataSource = results;
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\n نشد که بشه ", "error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

}
روش دوم از طریق switch/case که به نظرم این روش بهتر از اولیه :لبخند:

private void TxtSearch_TextChanged(object sender, EventArgs e)
{
if (TxtSearch.Text != "")
{
var query = from i in db.frosh.OrderByDescending(a => a.id)
select i;
switch (CmbSelectItem.Text)
{
case "کدکالا":
var id = int.Parse(TxtSearch.Text);
query = query.Where(s => s.kala_code==id);
break;
case "نام کالا":
query = query.Where(s => s.kala_name.Contains(TxtSearch.Text));
break;
case "سرویس":
var price = int.Parse(TxtSearch.Text);
query = query.Where(s => s.price == price);
break;
default:
query = query.OrderBy(s => s.id);
break;

}
dataGridView1.DataSource = query.ToList();
}

}

Abbas Naghdi
جمعه 13 دی 1392, 00:46 صبح
با تشکر متغیرهای من مشخص نیستند !

مهرداد صفا
جمعه 13 دی 1392, 11:01 صبح
با تشکر متغیرهای من مشخص نیستند !

سلام.
منظورتون از "متغیرها" دقیقا چه چیزی هست؟ آیا جدول مورد جستجو باید توسط کاربر و به طور پویا مشخص شود.؟ لطفا دقیقتر مطرح کنید.

Abbas Naghdi
جمعه 13 دی 1392, 13:44 عصر
سلام

یک جدول دارم که میخوام جستجو بر اساس اون انجام بشه .
جدول من شامل 3 فیلد هست ...
نام
نام خانوادگی
شهر محل سکونت

حالا برای این سه تا 3 تکس باکس گذاشتم.

میخوام کاربر وقتی در تکس باکس نام کلمه ی ((ب)) رو نوشت همه ی اسم هایی که با ((ب)) شروع میشن داخل گرید نمایش داده بشن
حالا میخوام وقتی در نام خانوادگی هم (س) وارد کرد همه ی نام هایی که با ((ب)) شروع میشوند + همه ی نام های خانوادگی که با ((س)) شروع میشن داخل گرید نمایش داده بشن .
در اینجا تکس باکس شهر محل سکونت خالی هست ... پس نباید در جستجو تاسیر داده بشه .

مهرداد صفا
یک شنبه 22 دی 1392, 16:49 عصر
با سلام.
طبق گفته دوستان سه فیلد رو می تونید با if و ... چک کنید.
مثال:


dataGridView1.DataSource=DB.myTable.Where(row=>TXTName.Text!=""?row.Name.StartsWith(TXTName.Text):true && TXTLast.Text!=""?row.Last.StartsWith(TXTLast.Text):true && TXTCity.Text!=""?row.City.StartsWith(TXTCity.Text):true).ToList()