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

نام تاپیک: تبدیل یک query به یک لیست داده ها

  1. #1

    تبدیل یک query به یک لیست داده ها

    سلام

    من یه query دارم بصورت زیر که میخام داده ها بصورت یه لیست باشن . برای اینکار یه لیست دستی از داده های جدول یک درست میکنم و با یه حلقه for یه لیست دیگه از داده های جدول دو . و هر دو رو در یک لیست قرار میدم . آیا روش بهتری برای اینکار وجود داره ؟ یا باید کارها رو بصورت دستی انجام بدم ؟
    ممنون

    var product= dbcontext.table1
    .Include(p => p.table1table2)
    .ThenInclude(pg => pg.Table2)
    .ToList();

  2. #2
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: تبدیل یک query به یک لیست داده ها

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

  3. #3

    نقل قول: تبدیل یک query به یک لیست داده ها

    ممنون از پاسختون .

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

  4. #4
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: تبدیل یک query به یک لیست داده ها

    وقتی navigation property هست چرا نیاز به حلقه for دارید؟
    آیا یک مقدار خاصی از درون کد به اطلاعات واکشی شده از جدول کالا ها اضافه می کنید

    لطفا ساختار مدل هاتون ارسال کنید

  5. #5

    نقل قول: تبدیل یک query به یک لیست داده ها

    بسیار ممنون

    جدول product :

    public class Product
    {
    public int Id { get; set;

    public string Title { get; set; }
    public string Body { get; set; }
    public int UserId { get; set; }
    public virtual User User { get; set; }
    public virtual ICollection<Image> Images{ get; set; } = new HashSet<Image>();

    public virtual ICollection<ProductComment> ProductComments { get; set; } = new HashSet<ProductComment>();

    public virtual ICollection<ProductGroup> ProductGroups { get; set; } = new HashSet<ProductGroup>();
    }



    جدول گروه ها :

    public class Group
    {

    public int Id { get; set; }

    public string Name { get; set; }


    public int? ParentId { get; set; }
    public virtual Group Parent { get; set; }


    public virtual ICollection<Group> Children { get; set; } = new HashSet<Group>();
    public virtual ICollection<ProductGroup> ProductGroups { get; set; } = new HashSet<ProductGroup>();

    }



    جدول ProductGroup


    public class
    ProductGroup
    {
    public int ProductId { get; set; }
    public virtual Product Product{ get; set; }
    public int GroupId { get; set; }
    public virtual Group Group { get; set; }
    }


    جدول Image


    public class Image
    {
    public int Id { get; set; }

    public string Name { get; set; }
    public string Description { get; set; }

    public bool DefaultPic { get; set; }
    public int ProductId { get; set; }
    public virtual Product Product{ get; set; }


    }



    جدول
    و اینکه جدول محصولات با چند تا جدول دیگه رابطه چند به چند دارن که ارتباطاتشون مثه جدول گروه انجام دادم. حالا یه query میزنم به این صورت که یه محصول رو با جزییات کامل دریافت کنم :


    var qProduct = _context.Products.Where(p=>p.Id==id)
    .Include(p => p.Images)
    .Include(p => p.User)
    .Include(p => p.ProductGroups)
    .ThenInclude(pg => pg.Group)
    .Include(p => p.ProductComment)
    .ThenInclude(pk => pk.Comment)
    .ToList();

  6. #6
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: تبدیل یک query به یک لیست داده ها

    این کوئری چه مشکلی دارد؟
    شما میتونید در قسمت ویو این رکوردهای بازیابی شده را در قسمت مربوطه خود نمایش بدید و نیاز به تبدیل شدن به جیسون هم نیست

    به نظر من شما نمیدونید چطور نمایش بدید اینطور هست؟

  7. #7

    نقل قول: تبدیل یک query به یک لیست داده ها

    ممنون از پاسختون .

    اگه بصورت عادی بخام اطلاعات رو نمایش بدم مشکلی ندارم اینکه میخام داده ها بصورت جیسون بشن چون اونا رو برای جاوااسکریپت ارسال میکنم و در ویو یه سری کارهای همزامن رو باید انجام بدم .

    مشکل من تبدیل رکوردهای بازیابی شده به یک داده جیسون در یک ریپازیتوری هست .
    اگر داده ها رو در کنترلر تشکیل بدم مشکلی نیست اما وقتی بخام از ریپازیتوری دریافت کنم چون نوعش داینامیک میشه داده ها رو بصورت نال در ویو بهم نشون میده .

    در کنترلر بصورت زیر کدها رو مینویسم و مشکلی نیست :

    public ExpandoObject ToExpando(object anonymousObject)
    {
    IDictionary<string, object> anonymousDictionary = new RouteValueDictionary(anonymousObject);
    IDictionary<string, object> expando = new ExpandoObject();
    foreach (var item in anonymousDictionary)
    expando.Add(item);
    return (ExpandoObject)expando;
    }
    public IActionResult Edit(int? id)
    {
    var groups = _uof.GroupRepository.Get();

    var qProduct = _dataContext.Products.Where(p => p.Id == id)
    .Include(p => p.ProductGroup)
    .ThenInclude(ps => ps.Group)
    .ToList();

    var tt = qProduct[0].RecipeGroups.Select(x => new
    {
    Id = x.Group.Id,
    Name = x.Group.Name
    }).ToList();

    var model = ToExpando(new { var1 = groups, var2 = tt });
    return View(model);
    }





    حالا اگر قسمت بدست آوردن جزییات یک محصول رو در یک ریپازیتوری بنویسم و داده رو بصورت جیسون که نوعش رو ExpandoObject قرار بدم زمانیکه داده رو از کنترلر دریافت کنم نمیتونم پردازش رو روش انجام بدم و به این نتیجه رسیدم یه جوری داده رو از نوع جیسون یا همون لیست معمولی بگیرم که بتونم در کنترلر ازش استفاده کنم . سوال من این پیدا کردن این روش هست ؟ ممنون و سپاسگزار

  8. #8
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: تبدیل یک query به یک لیست داده ها

    برگشتی اکشن بصورت json استفاده کنید
    مثلا

    [HttpGet]
    public ActionResult Edit()
    {


    dynamic expando = new ExpandoObject();
    expando.var1 = "ali";
    expando.var2 = "Ebrahimi";

    var json = JsonConvert.SerializeObject(expando);

    return Content(json, "application/json");
    }


    و در ویو میتونید اینجوری صدا بزنید


    <script>
    $.getJSON("@Url.Action("Edit", "Home")", function(data)
    {
    $.each(data,
    function (index, item) {
    console.log(item);

    });

    });

    </script>

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: جمعه 23 آبان 1393, 14:14 عصر
  2. تبدیل یک پایگاه داده واقعی متنی به یک پایگاه داده با فرمت basket
    نوشته شده توسط atiram در بخش دیگر زبان های اسکریپتی
    پاسخ: 0
    آخرین پست: دوشنبه 23 اردیبهشت 1392, 10:57 صبح
  3. تبدیل یک پایگاه داده واقعی متنی به یک پایگاه داده باینری در اکسل
    نوشته شده توسط atiram در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 0
    آخرین پست: دوشنبه 23 اردیبهشت 1392, 10:38 صبح
  4. سوال: مشکل درج در یک جدول با توجه به لیستی از داده ها به وسیله انتیتی
    نوشته شده توسط zahrashoja در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 5
    آخرین پست: پنج شنبه 09 شهریور 1391, 13:44 عصر
  5. سوال: ارسال یک سری داده ها از وی بی به یک سایت
    نوشته شده توسط karimkpg در بخش VB.NET
    پاسخ: 1
    آخرین پست: جمعه 21 مرداد 1390, 20:05 عصر

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

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