دسته بندی ها
07:23 1400/05/07

ادغام و نمایش اطلاعات چند List توسط Linq در Asp.net Core

مشخصات سوال کننده :
کاربر : hossein1244     امتیاز کاربر : 9     رتبه کاربر : 72
دسته بندی : Asp.net Mvc Asp.net Core جی کوئری

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3243
1 نظر
saedbfd : اگر پاسخ کامل و دقیق میخواید باید لیست هایی که دارید و کدهایی که نوشتید رو قرار بدید. در غیر این صورت فقط دو سه خط توضیح میشه نوشت براتون.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 10:27 1400/05/07
هوش مصنوعی

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

برای ادغام و نمایش اطلاعات چند لیست در ASP.NET Core با استفاده از LINQ، می توانید از کد زیر استفاده کنید. فرض می کنیم که شما سه لیست دارید: یکی برای کاربران (Users)، یکی برای دروس اصلی (MainCourses) و دیگری برای دروس جبرانی (SupplementaryCourses).

در این کد، ما از یک query LINQ برای فیلتر کردن کاربران کلاس دوم، و بررسی وجود آن ها در لیست دروس اصلی و دروس جبرانی استفاده خواهیم کرد.

using System;
using System.Collections.Generic;
using System.Linq;

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Class { get; set; } // 1: کلاس اول, 2: کلاس دوم
}

public class MainCourse
{
    public int Id { get; set; }
    public string Title { get; set; }
}

public class SupplementaryCourse
{
    public int Id { get; set; }
    public string Title { get; set; }
}

public class Program
{
    public static void Main()
    {
        List users = new List
        {
            new User { Id = 1, Name = "Ali", Class = 2 },
            new User { Id = 2, Name = "Sara", Class = 2 },
            new User { Id = 3, Name = "Reza", Class = 1 }
        };

        List mainCourses = new List
        {
            new MainCourse { Id = 1, Title = "Math" },
            new MainCourse { Id = 2, Title = "Science" }
        };

        List supplementaryCourses = new List
        {
            new SupplementaryCourse { Id = 1, Title = "Math Supplement" }
        };

        var result = users
            .Where(u => u.Class == 2)
            .Select(u => new
            {
                User = u,
                HasMainCourse = mainCourses.Any(mc => mc.Id == u.Id), // بررسی وجود دروس اصلی
                HasSupplementaryCourse = supplementaryCourses.Any(sc => sc.Id == u.Id) // بررسی وجود دروس جبرانی
            })
            .Where(x => !x.HasMainCourse && (!x.HasSupplementaryCourse || x.HasSupplementaryCourse))
            .Select(x => new
            {
                User = x.User,
                Courses = x.HasSupplementaryCourse ? supplementaryCourses : null // نمایش دروس جبرانی در صورت وجود
            }).ToList();

        foreach (var item in result)
        {
            Console.WriteLine($"User: {item.User.Name}");
            if (item.Courses != null)
            {
                foreach (var course in item.Courses)
                {
                    Console.WriteLine($"- Course: {course.Title}");
                }
            }
        }
    }
}

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

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : hamid_b 14:55 1400/05/07

نحوه استفاده از دستور Except در Linq و انتیتی فریم ورک

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

در مرحله اول نحوه کار با دستور Except در Linq رو براتون توضیح میدم. از این دستور وقتی استفاده میشه که شما بخواهید اطلاعاتی در List1 باشه که در List2 دوم نباشه. به مثال زیر دقت کنید :

  • List 1 = {A , B}
  • List 2 = {A , B , C}

خب دو لیست بالا رو داریم.

مقادیری که در List1 باشد ولی در List2 نباشد :

var InList1ButNotList2 = List1.Except(List2);

// result null

مقادیری که در List2 باشد ولی در List1 نباشد :

var InList2ButNotList1 = List2.Except(List1);

//result C

 

نحوه استفاده از دستور Intersect در Linq و انتیتی فریم ورک

متضاد دستور Except در Linq دستور Intersect می باشد. در این دستور مقادیر مشترک بین دو لیست را نمایش می دهد.

var InBothLists = List1.Intersect(List2);

//result A , B

دستور بالا مقادیری را نمایش میدهد که هم در List1 و هم در List2 به صورت اشتراکی وجود داشته باشد.

 

Filter Linq EXCEPT on properties

ویرایش شده در پنج شنبه 7 مرداد 1400 ساعت 14:56:52
به این پاسخ امتیاز بدهید    1
امتیاز: 518 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود