دسته بندی ها
12:16 1399/10/17

ایجاد کویری با چند شرط مختلف در انتیتی فریم ورک

مشخصات سوال کننده :
کاربر : navidadelifar     امتیاز کاربر : ‎−1     رتبه کاربر : 7097
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2466
هوش مصنوعی

پاسخ هوش مصنوعی

برای ایجاد یک کویری با چند شرط مختلف در Entity Framework، شما می توانید از LINQ استفاده کنید. در زیر نمونه ای از کد برای رسیدن به هدف شما آورده شده است:

using (var context = new YourDbContext())
{
    DateTime inputDate = // تاریخ ورودی
    int inputNumber = // عدد ورودی

    var results = context.Nezarat
        .Where(n => (n.VaziatAnjam == 2 || n.VaziatAnjam == 3 || n.VaziatAnjam == 5) &&
                    (n.DatePaigiri1 != null && DbFunctions.DiffDays(n.DatePaigiri1.Value, inputDate) >= inputNumber ||
                     n.DatePaigiri1 == null))
        .ToList();

    // حالا می توانید نتایج را به ویو بفرستید
    return View(results);
}

در این کد:

  • تاریخ ورودی و عدد ورودی را مشخص می کنید.
  • فیلتر کردن نتایج بر اساس شرایط ذکر شده انجام می شود.
  • در نهایت نتایج با متد ToList() گرفته می شود و می توانید آن ها را به ویو بفرستید.
به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : pedram_khan 17:50 1399/10/17

شما کوئری خودتون رو نوشتید و اطلاعات بر اساس فیلترهایی که نوشتید از دیتابیس واکشی میشه. فقط مونده اطلاعات رو درون ViewModel بریزید. به این شکل این کار انجام میشه :

if (baz[i].nnn >= bazeh)
{
    field1 = baz.field1,
    field2 = baz.filed2,
    ....
}

مقادیر سمت چپ فیلدهای ViewModel هستن که باید تک تک نوشته بشن و مقداردهی باشن. مقادیر سمت راست هم ستون هایی هستن که در کوئری شما که اسمش رو baz گذاشتید و از دیتابیس اطلاعاتشون میاد هستن.

به این پاسخ امتیاز بدهید    0
امتیاز: 277 رتبه: 6
پاسخ دهنده : hamid_b 14:50 1399/10/18

توی حلقه ای که نوشتید بهتره به جای حلقه for از حلقه foreach استفاده کنید تا بتونید به راحتی به مقادیر دسترسی داشته باشید. بنابراین ابتدا یک نمونه از ViewModel خودتون تعریف کنید و سپس در حلقه foreach به اون مقداردهی کنید.

 

NazaratViewModel1 nazar = new NazaratViewModel1();
foreach (var item in baz)
{
  if (baz[i].nnn >= bazeh)
  {
      nazar.field1 = item.field1,
      nazar.field2 = item.filed2,
      ....
  }
}

 

به این پاسخ امتیاز بدهید    0
امتیاز: 518 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود