• 1400/02/31

نمایش کامنت های حذف شده :

سلام

استاد من دوره core مقدماتی پیشرفته شما رو گذروندم. استاد من میخوام کامنت های دیلیت شده رو نشون بدم وقتی where میزنم روش 0 برمیگردونه با این که کامنت isDelete true هم دارم تو database

مشکل کد ef ام کجاست؟

public ShowCommentUsersForAdminViewModel GetRemovedCommentByAdminSearch(int pageId = 1, string filter = "")
        {
            //lazy load enable with IQueryable
            IQueryable<BlogComment> result = _context.BlogComments
                .Include(c => c.Blog)
                .Include(c => c.User);

            if (!string.IsNullOrEmpty(filter))
            {
                result = result.Where(u => u.Comment.Contains(filter) || u.User.UserName.Contains(filter) || u.Blog.BlogTitle.Contains(filter));
            }
            //show Item In Page
            int take = 10;
            int skip = (pageId - 1) * take;


            ShowCommentUsersForAdminViewModel list = new ShowCommentUsersForAdminViewModel();
            list.CurrentPage = pageId;
            list.PageCount = (result.Count() / take) + 1;
            list.BlogComments = result.Where(c => c.IsDelete).OrderBy(u => u.CreateDateComment).Skip(skip).Take(take).ToList();

            return list;
        }
  • 1400/02/31
  • ساعت 20:12

سلام‌

دیباگ کنید پیدا میشه


  • 1400/02/31
  • ساعت 21:22

استاد دیباگ گردم فقط در انتها عدد 0 رو نمایش میده. شما بفرمایید این where رو کجا باید بزارم؟ انتها همون جایی که هست یا خیر؟ اون بالا


  • 1400/02/31
  • ساعت 21:25

به نظر درسته 

تهش .tolist بزارید و تست کنید


  • 1400/02/31
  • ساعت 22:15

اگر ته بالا رو میفرمایید که طبق فرمایش خودتون از lazzy در میاد و به بانک فشار میاد . اگر پایین میفرمایید که .tolist داره انتهاش. منظورتون اینه اینطوری بزنم؟

    list.BlogComments = result.Where(c => c.IsDelete).ToList().OrderBy(u => u.CreateDateComment).Skip(skip).Take(take).ToList();

  • 1400/03/01
  • ساعت 09:36

سلام دوست عزیز

جهت دیباگ کردن پشت این دستور یه Tolist() بزارید :

result = result.Where(u => u.Comment.Contains(filter) || u.User.UserName.Contains(filter) || u.Blog.BlogTitle.Contains(filter));

اگر دیدید تا اینجای کار دیتا برنمیگردونه پس این شرط هاتون مشکل داره، اما اگه اینجا تعدادش بیشتر از 0 بود اما توی کوئری آخر که دارید ViewModel خودتون رو مقداردهی میکنید تعدادش صفر هست احتمالا بخاطر اینه که توی DbContext خودتون روی جدولتون QueryFilter اعمال کردید ! برای غیرفعال کردن QueryFilter هم قبل از ToList کردن از دستور  ()IgnoreQueryFilters. استفاده کنید

موفق باشید


logo-samandehi