PDA

View Full Version : فیلتر کردن Linq بعد از دریافت اطلاعات



Boy_nn
چهارشنبه 05 بهمن 1390, 12:48 عصر
سلام دوستا عزیز
کسانی که با ado.net کار کرده باشند میدونند اطلاعات دریافتی از ado.net بعد از دریافت از بانک اطلاعاتی میشه داخل BindingSource ریخت و اطلاعات بدون اینکه دوباره به بانک اطلاعاتی وصل بشی فیلتر کرد و از فیلتر در آورد

this.calendarTableAdapter.Fill(this.dataSet1.Calen dar);

calendarBindingSource.Filter = strFilter1;
calendarBindingSource.Filter = strFilter2;
calendarBindingSource.Filter = strFilter3;
calendarBindingSource.Filter = "";


حالا می خواستم ببینم همچین چیزی در Linq هم وجود داره
مثلا" من با کد زیر اطلاعات بوسیله Linq از بانک دریافت می کنم حالابدون اتصال مجدد به بانک اطلاعاتی می خوام اطلاعات فیلتر کنم

var selectt = from p in _linq.Calendars

select p;
dataGridView1 .DataSource = selectt ;

فقط دوستان گرامی در نظر داشته باشند نمی خوام با کلمه where دوباره linq رو بنویسم و این جوری فیلتر کنم
می خوام بدون اتصال مجدد به بانک اطلاعاتی فیلتر انجام بشه

با سپاس

amir3321
چهارشنبه 05 بهمن 1390, 15:17 عصر
فکر کنم این لینک (http://barnamenevis.org/showthread.php?323012-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-dgv-%D8%A8%D8%A7-entity-framework) بدرد شما بخورد

amir3321
چهارشنبه 05 بهمن 1390, 15:34 عصر
راستی میشه در مورد فیلتر خود bindingsource توضیح بدی چون خودم قبلا این کار رو در dataview انجام میدادم ولی با خود بایندیگ نتونستم توی اون لینک که برات گذاشتم عمل sort , filter بدون واکشی دوباره جهت datagridview را انجام دادم البته با کمک استاد gwbasic

Boy_nn
پنج شنبه 06 بهمن 1390, 10:20 صبح
وقتی اطلاعات رو از طریق دیتاست به دیتا گرید وصل کنی(به صورت ویزاردی) خودش یه کلاس BindingSource میسازه و اطلاعات رو از طریق BindingSource به دیتا گرید ویو انتقال میده
و اگه خواستی میتونی اطلاعات رو بدون اینکه به بانک اطلاعتی وصل بشی از طریق BindingSource فیلتر کنی
طریق فیلتر کردن هم به صورت زیر هست
calendarBindingSource.Filter ="ID= '"+strID+"'";
نوع کد نویسی هم به زبان sql است

اگه هم به صورت دستی کد نویسی کردی به جای اینکه اطلاعات رو مستقیم بریزی توی دیتاگرید اول توی یک نمونه از BindingSource میریزی و بعد BindingSource رو به دیتاگرید ویو وصل میکنی
و هر وقت خواست به روش بالا اطلاعات رو فیلتر میکنی
مزیت این کار این هست که شما فرض کن دریافت اطلاعات و انتقال به دیتاگرید n ثانیه زمان میبره اگه هرسری که شما بخوای فیلتر کنی بخوای اطلاعات از بانک بخونی باید n ثانیه صبر کنی ولی با این روش چون فیلتر بر روی اطلاعات موجود انجام میشه زمان مورد نیاز به حداقل ممکن میرسه

Boy_nn
پنج شنبه 06 بهمن 1390, 11:35 صبح
من فایل نگاه کردم ولی موقع اجرا اررور میداد خیلی هم ازش سر در نیوردم ولی تونستم یه ایده ازش بگیرم
به نظرم برنامه تو خیلی شلوغ کردی
ولی در هر صورت ممنون مشکل من حل شد