دسته بندی ها
13:05 1400/06/12

جوین دو جدول در انتیتی فریم ورک و نمایش بر اساس ستون مشترک

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

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

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

شما می توانید برای حذف سطرهای تکراری بر اساس `ProductId` از متد `GroupBy` استفاده کنید. در کد شما می توان به شکل زیر تغییراتی اعمال کرد:

var product = (from p in _context.ProductRepositoryUW.Get()
                join pd in _context.ProductDetailRepositoryUW.Get()
                on p.ProductId equals pd.ProductId   
                group pd by new { p.ProductId, p.Name, p.price } into g
                select new ProductListViewModel()
                    {
                         ProductId = g.Key.ProductId,
                         Name = g.Key.Name,
                         price = g.Key.price,
                         image = g.FirstOrDefault().image // فقط از اولین سطر استفاده می شود
                    }).ToList();

این کد با استفاده از `GroupBy` سطرها را بر اساس `ProductId` گروه بندی می کند و سپس با استفاده از `FirstOrDefault` تنها یک سطر برای هر گروه انتخاب می شود.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 00:17 1400/06/13

در لینک زیر نحوه جوین جداول در انتیتی فریم ورک توضیح داده شده.

جوین جداول و نمایش داده های دلخواه در انتیتی فریم ورک

  • شما یک جدول به نام Product دارید که کلید اصلی این جدول ProductID هست.
  • یک جدول هم به نام ProductDetails دارید که فیلد ProductID از جدول Product در اون کلید خارجی می خواهید استفاده کنید. خب اولین کاری که باید انجام می دادید و انجام نشده این هست که باید فیلد ProductID رو به عنوان کلید خارجی در این جدول معرفی کنید. به کد زیر دقت کنید این کار انجام شده براتون.
public class ProductDetail
{
        [Key]
        public int ProductDetail_Id { get; set; }

        [Required]
        [Display(Name = "رنگ")]
        public string color { get; set; }

        [Required]
        [Display(Name = "تعداد")]
        public int count { get; set; }

        [Required]
        [Display(Name = "عکس")]
        public string image { get; set; }

        [Required]
        public int ProductId { get; set; }

        [ForeignKey("ProductID")]
        public virtual Product Product { get; set; }
}

 

خب حالا می تونید کوئری جوین خودتون رو به صورت زیر بنویسید :

var productquery = (from p in _context.Product join pd in _context.ProductDetail
                on p.ProductId equals pd.ProductId   
                select new ProductListViewModel()
                {
                     ///...
                }).ToList();

خب توسط دستورات می تونید به راحتی جوین رو انجام بدید. شما میتونید از انواع Join در انتینتی فریم ورک استفاده کنید. مثلا Left Join یا Right Join یا ... (انواع Join و آشنایی با آنها)

نحوه Left Join در انتیتی فریم ورک

 

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
1 نظر
olfat80r : احسنت ، کاملا درسته ایشون اتصال و ارتباط دو جدول را تعیین نکرده ست و پس از اینکار مشکل به نظرم حل خواهد شد. ♥

امتیاز کاربر : 5   رتبه کاربر : 110   تاریخ ثبت : 04:11 1400/07/28
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود