PDA

View Full Version : فیلتر کردن بر اساس ایتم های انتخابی



Helpco
چهارشنبه 29 فروردین 1397, 08:59 صبح
سلام من یک کمبو دارم که بصورت شکل زیر قابل انتخاب چند ایتم

147967

ایتم های انتخابی بصورت یک ارایه که به این صورت نشون میده (11, 14, 1, 2)
حلا چطوری متونم با linq فیلتر کنم برا اساس این ایتم ها
ممکن ایتم انتخابی 1عدد باشه ممکن 6 عدد باشد

Mahmoud.Afrad
چهارشنبه 29 فروردین 1397, 09:22 صبح
Query با استفاده از where در یک لیست (http://barnamenevis.org/showthread.php?528518-Query-با-استفاده-از-where-در-یک-لیست)

Helpco
چهارشنبه 29 فروردین 1397, 09:54 صبح
ممنون دوست خوب ولی من نمیخوام داخل لیست جستجو کنم من مخوام داخل دیتا بیس بگردم و فیلتر کنم

Mahmoud.Afrad
چهارشنبه 29 فروردین 1397, 11:16 صبح
اگر به تاپیکی که لینک دادم نگاه میکردید متوجه میشدید دقیقا سوالی مثل سوال شما پرسیده شده.
یک لیست از آیدی موارد انتخابی بسازید و در شرط کوئری از متد contains مربوط به همین لیست استفاده کنید.

Helpco
چهارشنبه 29 فروردین 1397, 12:51 عصر
من الان این کار انجام دادم
Advertisements.Where(c => listOfCategoryId.Contains(c.CategoryId))
ولی وقتی نتجه گذارش میبینم میاد فقط ایتم 0 لیست فیلتر مکنه و بقیه ایتم ها فیلتر نمیکنه
یعنی اگه داخل لیست ما دوتا ایتم داسته باشم ایدم دوم را اطلاعاتش نمیاره

Mahmoud.Afrad
چهارشنبه 29 فروردین 1397, 14:10 عصر
کد خودتون چیه؟

Helpco
چهارشنبه 29 فروردین 1397, 14:20 عصر
public partial class Form1 : Form
{
public static Database1Entities1 db = new Database1Entities1();
public Form1()
{
InitializeComponent();
}
private List<string> Areaali;





private void button1_Click(object sender, EventArgs e)
{
Areaali = Comboit.Text.Split(',').ToList();


dataGridView1.DataSource = db.Tables.Where(x => Areaali.Contains(x.mas)).ToList();




}


private void Form1_Load(object sender, EventArgs e)
{




dataGridView1.DataSource = db.Tables.ToList();
}


}





این فایل پروژه
http://s8.picofile.com/file/8323999476/WindowsFormsApp1.rar.html

Mahmoud.Afrad
چهارشنبه 29 فروردین 1397, 15:29 عصر
ستون nchar هست که باعث مشکل میشه(spaceهای اضافی). نوع ستون رو به nvarchar تبدیل و مقادیر رکوردها رو اصلاح کنید.
ولی بهتر این هست که یک جدول برای مناطق داشته باشید و از آیدی اون در جدول دیگر استفاده کنید تا به این مشکلات برنخورید. کمبو را هم از جدول مناطق پر کنید و آیدی عناصر انتخابی را بدست آورده و در کوئری استفاده کنید.

Helpco
چهارشنبه 29 فروردین 1397, 15:39 عصر
نوع ستون رو به nvarchar تبدیل کردم نیمتونم ایدی ذخیره کنم باید متن ذخیره کنم
ولی بازم عمل فیلتر انجام نمیشه

Mahmoud.Afrad
چهارشنبه 29 فروردین 1397, 15:43 عصر
... نیمتونم ایدی ذخیره کنم باید متن ذخیره کنم


چرا نمیتونید؟

Helpco
پنج شنبه 30 فروردین 1397, 23:13 عصر
Query با استفاده از where در یک لیست (http://barnamenevis.org/showthread.php?528518-Query-با-استفاده-از-where-در-یک-لیست)
استاد عزیز داخل Where چطوری نال بودنش برسی کنیم کخ با خطا درصورت نال بودن بر نخوریم

Mahmoud.Afrad
جمعه 31 فروردین 1397, 06:17 صبح
استاد عزیز داخل Where چطوری نال بودنش برسی کنیم کخ با خطا درصورت نال بودن بر نخوریم

اگر منظورت null بودن لیست موارد انتخابی هست که با یک شرط if قبل از کوئری میتونید چک کنید.

اگر null بودن x.mas منظورت هست باید دو حالت null بودن یا نبودن رو در نظر بگیرید
Where(x => x.mas==null || Areaali.Contains(x.mas))

Helpco
شنبه 01 اردیبهشت 1397, 08:21 صبح
اگر منظورت null بودن لیست موارد انتخابی هست که با یک شرط if قبل از کوئری میتونید چک کنید.

اگر null بودن x.mas منظورت هست باید دو حالت null بودن یا نبودن رو در نظر بگیرید
Where(x => x.mas==null || Areaali.Contains(x.mas))
منظور از
null بودن یعنی لیست خالی و کابر چیزی انتخاب نکرده پس باید همه موارد را بیاره و شرط اعمال نشه

Mahmoud.Afrad
شنبه 01 اردیبهشت 1397, 13:08 عصر
منظور از
null
بودن یعنی لیست خالی و کابر چیزی انتخاب نکرده پس باید همه موارد را بیاره و شرط اعمال نشه

روش اول آموزش زیر
http://barnamenevis.org/showthread.php?471215-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-%D8%AF%D8%B1-Entity-FrameWork-(%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D9%88-%D9%81%DB%8C%D9%84%D8%AA%D8%B1-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-%D9%82%D8%A8%D9%84-%D9%84%D9%88%D8%AF-%D8%B4%D8%AF%D9%87)

Helpco
یک شنبه 02 اردیبهشت 1397, 07:37 صبح
روش اول آموزش زیر
http://barnamenevis.org/showthread.php?471215-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-%D8%AF%D8%B1-Entity-FrameWork-(%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D9%88-%D9%81%DB%8C%D9%84%D8%AA%D8%B1-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-%D9%82%D8%A8%D9%84-%D9%84%D9%88%D8%AF-%D8%B4%D8%AF%D9%87)
ممنون ولی اینطوری باید اگه 20 فیلد داشته باشیم باید 20 شرط هم بزاریم