نمایش نتایج 1 تا 21 از 21

نام تاپیک: Paging با استفاده از LINQ

  1. #1
    VIP آواتار raziee
    تاریخ عضویت
    دی 1348
    محل زندگی
    تهران
    سن
    36
    پست
    2,208

    Post Pageing با استفاده از LINQ

    با سلام.
    این مثال درباره پیاده سازی صفحه بندی توسط LINQ است.
    کد های آن به صوت زیر است:

    void PageDataBind(int Skip)
    {
    int take = 2;
    dc = new MoviesDataContext();

    var query = from m in dc.Movies select m;

    int Counter = query.Count();
    lblSum.Text = Counter.ToString();

    List<myPageing> myP = new List<myPageing>();
    for (int i = 0; i < Counter; i = i + take)
    {
    myP.Add(new myPageing { Value = i, Title = i + 1 });
    }

    Paging.DataSource = myP;
    query = query.Skip(Skip).Take(take);

    MovieRepeater.DataSource = query;
    MovieGridView.DataSource = query;
    MovieDataList.DataSource = query;
    Page.DataBind();
    }

    به کمک Skip و Take میتوانیم عمل صفحه بندی را کنترل کنیم.

    skip برای پرش رکورد ها ایت. به طور مثال اگر عدد 23 را به عنوان ورودی بگیرد از رک.رد 23 به بعد را بر میگرداند.
    take تعداد رکورد های برگشت داده شده را مشخص میکند.

    کد های زیر که از بدنه ی اصلی گرفته شده اند برای ایجاد دسترسی به صفحات هستند. که بعد از بدست آوردن تعداد کل رکورد ها بر اساس تعداد رکورد های برگشت داده شده صفحات را ایجاد میکند.
    int Counter = query.Count();
    lblSum.Text = Counter.ToString();

    List<myPageing> myP = new List<myPageing>();
    for (int i = 0; i < Counter; i = i + take)
    {
    myP.Add(new myPageing { Value = i, Title = i + 1 });
    }

    Paging.DataSource = myP


    برای آموزش LINQ میتوانید به این تاپیک مراجعه کنید.

    شاد باشید.
    فایل های ضمیمه فایل های ضمیمه
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  2. #2

    نقل قول: Paging با استفاده از LINQ

    در حد یک مثال خوبه اما کاربرد عملی نداره چون تمامی رکوردها رو لود می کنه و این یک فاجعه برای حافظه است. Paging صحیح فقط از طریق Stored Procedure و متد Row_Number در SQL Server قابل انجام هست.

    موفق باشید.

  3. #3
    VIP آواتار raziee
    تاریخ عضویت
    دی 1348
    محل زندگی
    تهران
    سن
    36
    پست
    2,208

    Cool نقل قول: Paging با استفاده از LINQ

    در حد یک مثال خوبه اما کاربرد عملی نداره چون تمامی رکوردها رو لود می کنه و این یک فاجعه برای حافظه است. Paging صحیح فقط از طریق Stored Procedure و متد Row_Number در SQL Server قابل انجام هست.
    تشکر جناب راد.
    هدفم استفاده از متد LINQ بود. فرمایش شما کاملا صحیحه در فایل ضمیمه همونطور که شما گفتید عمل شده و پیجینگ در بانک ساخته میشه. اما برای این کار دیگه به LINQ نیازی نیست درسته ؟ با همون دیتاست و ... میشه کار رو حل کرد.
    فایل های ضمیمه فایل های ضمیمه
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  4. #4

    نقل قول: Paging با استفاده از LINQ

    LINQ to SQL یک ORM هست. قابلیت کار با Stored Procedureها رو هم داره. به SP به چشم یک متد نگاه می کنه. Data Context جزء اصلی کار با LINQ to SQL هست. اجرای SP از طریق Data Context انجام میشه.
    سعی کن تا حد ممکن از DataSet استفاده نکنی.

    موفق باشید.
    آخرین ویرایش به وسیله Behrouz_Rad : دوشنبه 07 دی 1388 در 10:52 صبح

  5. #5
    VIP آواتار raziee
    تاریخ عضویت
    دی 1348
    محل زندگی
    تهران
    سن
    36
    پست
    2,208

    نقل قول: Paging با استفاده از LINQ

    سعی کن تا حد ممکن از DataSet استفاده نکنی.
    با تشکر جناب راد.
    میشه در این رابطه که چرا از dataset نباید استفاده کرد توضیحاتی رو بدین و یا لینک آموزشی رو محبت کنید.
    استفاده از LINQ to Dataset رو هم مناسب نمیدونید؟
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  6. #6

    نقل قول: Paging با استفاده از LINQ

    برای بیان دلیل عدم استفاده از DataSet در ASP.NET به مقاله ی معروف برادر همیشه در صحنه، اسکات میشل، ارجاعت میدم:
    http://www.4guysfromrolla.com/articles/050405-1.aspx

    همین کافیه که بدونی چرا نباید از LINQ to DataSet استفاده کنی.

    موفق باشید.

  7. #7
    VIP آواتار raziee
    تاریخ عضویت
    دی 1348
    محل زندگی
    تهران
    سن
    36
    پست
    2,208

    نقل قول: Paging با استفاده از LINQ

    ممنونم قربان
    شما همیشه نسبت به بچه های این سایت لطف داشتید.
    سپاسگذارم.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  8. #8
    کاربر دائمی آواتار mohsen_zelzela00
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    internet && .net
    پست
    755

    نقل قول: Paging با استفاده از LINQ

    نقل قول نوشته شده توسط Behrouz_Rad مشاهده تاپیک
    سعی کن تا حد ممکن از DataSet استفاده نکنی.

    موفق باشید.
    سلام آقای مهندس راد

    مثل همیشه به موارد کلیدی اشاره می کنید.
    به جای استفاده از DataSet از List<T> استفاده کنیم؟؟؟؟؟؟؟؟؟؟؟

  9. #9

    نقل قول: Paging با استفاده از LINQ

    نقل قول نوشته شده توسط mohsen_zelzela00
    به جای استفاده از DataSet از List<T> استفاده کنیم؟
    به جای استفاده از Typed DataSet، از Generic List و کلاس معادل موجودیت استفاده کن.

    موفق باشید.

  10. #10

    نقل قول: Paging با استفاده از LINQ

    جناب راد استفاده از ORM در پروژه هایی که از sp استفاده می شه جایز می دونید؟
    هر تغییر در بانک باید سمت برنامه هم انجام بشه آیا کار اضافی محسوب می شه یا محاسنی داره که به وقت و هزینه بیشتر می ارزه و اگه ORM چیز خوبی آیا ORM خواصی توصیه می کنید؟
    مثل Nhibernate

  11. #11

    نقل قول: Paging با استفاده از LINQ

    لزوما قويترين ORM بهترين ORM براي هر فرد نيست . با توجه به ويژگيهاي پروژتون + ميزان تجربه مناسب ترين را انتخاب كنيد .
    NHibernate براي پروژه هاي EnterPrise و بزرگ مناسبه .

  12. #12

    نقل قول: Paging با استفاده از LINQ

    من معمولا از ORM استفاده نمی کنم چون کویری سمت برنامه ندارم می خواستم بدونم کار درستی می کنم یا مپینگ حسنایی داره که به دردسرش می ارزه، توی مقاله ای که آقای راد گذاشتن دیتا ریدر و دیتاست با هم مقایسه شده بودن ولی چیزی که هست دیتا ریدر آفلاین نیست بنابراین نیاز به استفاده با جنریک برای پر کردن اطلاعات داره آیا زمان پر کردن جنریک با زمان پر شدن دیتاست حدودا یکسان نیست؟
    دوست دارم بیشتر در این موارد بحث کنیم

  13. #13

    نقل قول: Paging با استفاده از LINQ

    نقل قول نوشته شده توسط iman_ad مشاهده تاپیک
    جناب راد استفاده از ORM در پروژه هایی که از sp استفاده می شه جایز می دونید؟
    هر تغییر در بانک باید سمت برنامه هم انجام بشه آیا کار اضافی محسوب می شه یا محاسنی داره که به وقت و هزینه بیشتر می ارزه و اگه ORM چیز خوبی آیا ORM خواصی توصیه می کنید؟
    مثل Nhibernate
    یکی از قابلیت های اصلی ORMها، کار با SPها است. در این حالت، ORM به عنوان یک واسط برای اجرای SP عمل می کنه.
    در استفاده از ORMها بین افراد مختلف اختلاف نظر زیادی وجود داره. بعضی ها معماری خاص خودشون رو دارن و برخی دیگه به ORMها اطمینان کامل دارن (مثل StackOverflow.com).
    طبق نظر سنجی که چند وقت پیش خوندم، NHibernate بیشترین محبوبیت رو داره و بعد از اون LINQ to SQL هست.
    به هر حال، آدمی سلایق مختلفی داره. شما امتحان کن ببین کدوم روش به مذاقت خوش میاد ;)

    موفق باشید

  14. #14

    نقل قول: Paging با استفاده از LINQ

    نقل قول نوشته شده توسط iman_ad مشاهده تاپیک
    من معمولا از ORM استفاده نمی کنم چون کویری سمت برنامه ندارم می خواستم بدونم کار درستی می کنم یا مپینگ حسنایی داره که به دردسرش می ارزه، توی مقاله ای که آقای راد گذاشتن دیتا ریدر و دیتاست با هم مقایسه شده بودن ولی چیزی که هست دیتا ریدر آفلاین نیست بنابراین نیاز به استفاده با جنریک برای پر کردن اطلاعات داره آیا زمان پر کردن جنریک با زمان پر شدن دیتاست حدودا یکسان نیست؟
    دوست دارم بیشتر در این موارد بحث کنیم
    منم دوست دارم بحث کنیم اما سوالتون ارتباطی با موضوع تاپیک نداره. لطفاً بر طبق موضوع تاپیک پیش برید.

    ممنون.

  15. #15
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    خراسان رضوی
    پست
    677

    نقل قول: Paging با استفاده از LINQ

    نقل قول نوشته شده توسط Behrouz_Rad مشاهده تاپیک
    به جای استفاده از Typed DataSet، از Generic List و کلاس معادل موجودیت استفاده کن.

    موفق باشید.
    من برای paging از برنامه گرید آقای راد استفاده کردم . خوب در اون برنامه از آبجکت dataset استفاده شده بود . آیا اون شیوه بهینه نیست ؟؟

  16. #16
    کاربر دائمی آواتار m.hamidreza
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    کره زمین
    پست
    1,465

    Lightbulb نقل قول: Paging با استفاده از LINQ

    iman_ad@:
    برادر لطف کن سوالتو و کلا مباحث مرتبط با سوالت رو در یه تاپیک جدید ادامه بده...
    ممنون.

  17. #17

    نقل قول: Paging با استفاده از LINQ

    نقل قول نوشته شده توسط shocraneh مشاهده تاپیک
    من برای paging از برنامه گرید آقای راد استفاده کردم . خوب در اون برنامه از آبجکت dataset استفاده شده بود . آیا اون شیوه بهینه نیست ؟؟
    وقتی میگی "برنامه ی Grid آقای راد"، اینجور در ذهن تداعی میشه که اون برنامه فقط یک نسخه داره در صورتی که اون پروژه، 7 نسخه داره. نسخه ی 7 رو دانلود کن تا متوجه منظورم بشی.

    موفق باشید.

  18. #18
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    خراسان رضوی
    پست
    677

    نقل قول: Paging با استفاده از LINQ

    نقل قول نوشته شده توسط Behrouz_Rad مشاهده تاپیک
    وقتی میگی "برنامه ی Grid آقای راد"، اینجور در ذهن تداعی میشه که اون برنامه فقط یک نسخه داره در صورتی که اون پروژه، 7 نسخه داره. نسخه ی 7 رو دانلود کن تا متوجه منظورم بشی.

    موفق باشید.
    راستش من با ویبی کار می کنم نسخه آخر سی شارپ است .راستش خیلی روش وقت نزاشتم .

  19. #19

    نقل قول: Paging با استفاده از LINQ

    نقل قول نوشته شده توسط Behrouz_Rad مشاهده تاپیک
    در حد یک مثال خوبه اما کاربرد عملی نداره چون تمامی رکوردها رو لود می کنه و این یک فاجعه برای حافظه است. Paging صحیح فقط از طریق Stored Procedure و متد Row_Number در SQL Server قابل انجام هست.

    موفق باشید.
    سلام ،

    اگر چه متد ارائه شده توسط ايجاد كننده تاپيك بهينه نيست و گفته آقاي راد صحيح هست ولي با جمله دوم ايشون مخالفم .

    ما ميتونيم از طريق Linq to Sql هم Paging واقعي رو پياده سازي كنيم و محدود به استفاده از Stored Procedure نيستيم .

    در مثال زير Paging ما بهينه هست :

        public void bindProducts(int startrow)
    {
    DataClassesDataContext db = new DataClassesDataContext();
    var products = from p in db.Products
    where p.Order_Details.Count > 2
    select new
    {
    ID = p.ProductID,
    Name = p.ProductName,
    numOrders = p.Order_Details.Count,
    revenue = p.Order_Details.Sum(o => o.UnitPrice * o.Quantity),
    };
    GridView1.DataSource = products.Skip(startrow).Take(10);
    GridView1.DataBind();
    }



    علت هم به خاطر اين هست كه Linq از deferred execution استفاده ميكند ، بعبارتي تا زماني كه درون داده هاي برگشتي Iterate نكنيم ، يا به كنترلهاي داده Bind نكنيم Query بر روي بانك داده اجرا نميشود
    آخرین ویرایش به وسیله Mostafa_Dindar : چهارشنبه 01 اردیبهشت 1389 در 00:30 صبح دلیل: متد رو ناقص كپي كرده بودم

  20. #20
    کاربر دائمی آواتار Rambod
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    سن
    46
    پست
    404

    نقل قول: Paging با استفاده از LINQ

    با حرف جناب Lastphoenix کاملاً موافقم.
    من قبلاً Paging رو با LinqDatasource و GridView تست کردم و در SQL Profiler دیدم که بصورت هوشمند در ساخت Query از Row_Number استفاده میشه.

  21. #21

    نقل قول: Paging با استفاده از LINQ

    براي اينكه شك تون به يقين تبديل بشه به گفته Scott Guttire ارجاعتان ميدم :

    We can use the Skip() and Take() methods below to indicate that we only want to return 10 product objects - starting at an initial product row that we specify as a parameter argument:
    Note above how I did not add the Skip() and Take() operator on the initial products query declaration - but instead added it later to the query (when binding it to my GridView datasource). People often ask me "but doesn't this mean that the query first grabs all the data from the database and then does the paging in the middle tier (which is bad)?" No. The reason is that LINQ uses a deferred execution model - which means that the query doesn't actually execute until you try and iterate over the results.

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •