آموزش پیشرفته LINQ

تهران آی تی / برنامــه نویــسـی / آموزش پیشرفته LINQ

آموزش پیشرفته LINQ

در این بخش از دوره پیشرفته Entity Framework Core 9 به آموزش پیشرفته LINQ میپردازیم. LINQ یک تکنولوژی است که به شما این امکان را می‌دهد تا با استفاده از سینتکس سی شارپ، به داده‌ها کوئری بزنید. به عبارت دیگر، LINQ به شما اجازه می‌دهد تا عملیات مختلفی نظیر جستجو، فیلتر کردن، مرتب‌سازی و گروه‌بندی داده‌ها را با استفاده از یک زبان واحد انجام دهید.

LINQ مخفف “Language-Integrated Query” یک زبان کوئری نویسی قدرتمند است که به همراه نسخه ۳٫۵ فرم ورک .NET و ویژوال استودیو ۲۰۰۸ منتشر شد. LINQ را می توان برای کوئری زدن بر روی منابع داده مختلف در زبان برنامه نویسی سی شارپ و ویژوال بیسیک استفاده کرد.

LINQ ابزاری بسیار قدرتمند و انعطاف‌پذیر برای کار با داده‌ها در C# است. این ابزار امکان دسترسی به داده‌ها، فیلتر کردن، مرتب‌سازی، و بسیاری از عملیات دیگر را با یک نحو یکپارچه و ساده فراهم می‌کند.

مزایای LINQ

  • یکپارچگی با زبان برنامه‌نویسی: LINQ به عنوان بخشی از زبان C# تعریف شده. و نیازی به یادگیری یک زبان جداگانه (مانند SQL) نیست.
  • خوانایی بهتر: کدهای LINQ معمولاً ساده‌تر و خواناتر از کدهای سنتی برای دسترسی به داده‌ها هستند.
  • پشتیبانی از چندین منبع داده: با استفاده از LINQ، شما می‌توانید به سادگی به انواع مختلف منابع داده مانند XML، پایگاه داده‌ها، و اشیاء دسترسی پیدا کنید.

ساختار کلی LINQ

LINQ پرس و جوها را به زبان شی‌گرایی که با ساختار داده شما هماهنگ است می‌نویسد. این پرس و جوها معمولاً از دو بخش تشکیل شده‌اند:

  • بخش Query: که شامل توابع و اپراتورهایی مانند Where، Select، OrderBy و غیره می‌شود.
  • بخش اجرای Query: زمانی که داده‌ها از منبع بازیابی می‌شوند و عملیات اجرا می‌شود.

اپراتورهای LINQ

بیش از ۵۰ اپراتور در LINQ وجود دارد. و در اصل هر یک  از این اپراتورها یک فانکشن از LINQ میباشند. و می توان آن ها را بر اساس کاری که انجام می دهند به صورت زیر گروه بندی کرد:

گروه عملگرها
Filtering Where, OfType
Sorting OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse
Grouping GroupBy, ToLookup
Join GroupJoin, Join
Projection Select, SelectMany
Aggregation Aggregate, Average, Count, LongCount, Max, Min, Sum
Quantifiers All, Any, Contains
Elements ElementAt, ElementAtOrDefault, First, FirstOrDefault, Last, LastOrDefault, Single, SingleOrDefault
Set Distinct, Except, Intersect, Union
Partitioning Skip, SkipWhile, Take, TakeWhile
Concatenation Concat
Equality SequenceEqual
Generation DefaultEmpty, Empty, Range, Repeat
Conversion AsEnumerable, AsQueryable, Cast, ToArray, ToDictionary, ToList

اپراتورهای مرتب سازی

  • اپراتور OrderBy آیتم‌ها را بر اساس یک کلید مشخص به ترتیب صعودی مرتب می‌کند. یعنی از کم به زیاد.

var list = student.OrderBy(p => p.Age).ToList();

  • اپراتور OrderByDescending آیتم‌ها را بر اساس یک کلید مشخص به ترتیب نزولی مرتب می‌کند. یعنی از زیاد به کم.

var list = student.OrderByDescending(p=>p.Age).ToList();

  • اپراتور ThenBy وقتی از OrderBy برای مرتب‌سازی استفاده کردید، اگر نیاز به مرتب‌سازی دوم یا بیشتر داشتید (مرتب‌سازی فرعی)، از ThenBy استفاده می‌کنید. این اپراتور آیتم‌های هم‌رده را بر اساس کلید دیگری به ترتیب صعودی مرتب می‌کند.

var list = student.OrderByDescending(p=>p.Age).ThenBy(p=>p.Id).ToList();

  • اپراتور ThenByDescending این اپراتور مشابه ThenBy است، اما مرتب‌سازی ثانویه را به ترتیب نزولی انجام می‌دهد.

var list = student.OrderByDescending(p=>p.Age).ThenByDescending(p=>p.Id).ToList();

  • اپراتور Reverse ترتیب آیتم‌های یک مجموعه را معکوس می‌کند. این اپراتور به ترتیب آیتم‌ها کاری ندارد، فقط ترتیب موجود را وارونه می‌کند.

var list = student.OrderBy(p=>p.Age).Reverse().ToList();

اپراتورهای فیلتر

  • اپراتور Where برای فیلتر کردن عناصر مجموعه بر اساس یک شرط یا چند شرط استفاده می‌شود. این اپراتور آیتم‌هایی را که شرط تعیین شده را برقرار می‌کنند، انتخاب می‌کند.

var list = student.Where(p=>p.City=="Tehran").ToList();

And در اپراتور Where

var list = student.Where(p => p.City == "Tehran" && p.Age >= 40).ToList();

Or در اپراتور Where

var list = student.Where(p => p.City == "Tehran" || p.Age >= 40).ToList();

اپراتورهای Projection

  • اپراتور Select برای فرافکنی و انتخاب یک یا چند خاصیت از هر آیتم در مجموعه استفاده می‌شود. این اپراتور هر آیتم از مجموعه اصلی را به آیتم جدیدی که توسط شما تعریف می‌شود، تبدیل می‌کند. اگر شما یک مجموعه از اشیاء داشته باشید، می‌توانید تنها یک یا چند ویژگی از آن‌ها را انتخاب کنید.

دریافت یک ستون

var list = student.Select(p=> p.Name).ToList();

دریافت بیشتر از یک ستون

var list = student.Select(p=>new { p.Name, p.Family }).ToList();

  • اپراتور SelectMany در طول دوره مورد برسی قرار میگیرد.

اپراتورهای Aggregation

  • اپراتور Average میانگین اعداد را در یک مجموعه محاسبه می‌کند. این اپراتور تنها برای مجموعه‌های عددی کاربرد دارد.

var average = student.Average(x => x.Age).ToString();

  • اپراتور Count تعداد آیتم‌های موجود در یک مجموعه را برمی‌گرداند. اگر شرطی تعریف شود، فقط آیتم‌هایی که شرط را دارند شمارش می‌شوند.

var count = student.Count().ToString();

تعداد آیتم ها با شرط

var count = student.Count(p=>p.City=="Tehran").ToString();

  • اپراتور LongCount مشابه Count است، اما برای زمانی استفاده می‌شود که تعداد آیتم‌های مجموعه بسیار زیاد و فراتر از مقادیر پشتیبانی‌شده توسط int باشد. LongCount یک مقدار long برمی‌گرداند.

var count= student.LongCount(p=>p.City=="Tehran").ToString();

  • اپراتور Max بیشترین مقدار در مجموعه را برمی‌گرداند. این اپراتور برای مجموعه‌های عددی و همچنین سایر مجموعه‌ها (مثلاً رشته‌ها) قابل استفاده است.

var max= student.Max(p=>p.Age).ToString();

  • اپراتور Min کمترین مقدار در مجموعه را برمی‌گرداند. مشابه Max، این اپراتور برای مجموعه‌های عددی و غیر عددی قابل استفاده است.

var min= student.Min(p=>p.Age).ToString();

  • اپراتور Sum مجموع اعداد موجود در یک مجموعه را محاسبه می‌کند. این اپراتور تنها برای مجموعه‌های عددی کاربرد دارد.

var sum = student.Sum(p=>p.Id).ToString();

اپراتورهای Quantifiers

  • اپراتور First اولین عنصری که یک شرط خاص را برآورده می‌کند، پیدا کرده و برمی‌گرداند. اگر چنین عنصری وجود نداشته باشد، یک استثنا (Exception) ایجاد می‌کند.

var res= student.First(p=>p.Id==1);

  • اپراتور FirstOrDefault مشابه First است، اما به جای اینکه در صورت عدم وجود عنصر شرطی یک استثنا ایجاد کند، مقدار پیش‌فرض (مثل null برای اشیاء یا مقدار ۰ برای عددی‌ها) را برمی‌گرداند.

var res= student.FirstOrDefault(p=>p.Id==1);

اپراتور Single عنصری را که شرط خاصی را برآورده می‌کند و به طور یگانه (یعنی تنها یک آیتم) در مجموعه وجود دارد، برمی‌گرداند. اگر بیشتر از یک عنصر پیدا شود یا هیچ عنصری پیدا نشود، یک استثنا ایجاد می‌شود.

var res= student.Single(p=>p.Id==1);

اپراتور SingleOrDefault مشابه Single است، اما اگر عنصری پیدا نشود، مقدار پیش‌فرض (مثل null) را برمی‌گرداند.

var res= student.SingleOrDefault(p=>p.Id==1);

  • اپراتور All بررسی می‌کند که آیا همه آیتم‌های یک مجموعه یک شرط خاص را برآورده می‌کنند یا نه. اگر همه آیتم‌ها شرط را برقرار کنند، مقدار true برگردانده می‌شود؛ در غیر این صورت false.

در این مثال برسی کردیم آیا سن تمام کاربران بالای ۱۵ سال است یا خیر؟ مقدار True یا False برمیگرداند.

var check= student.All(p => p.Age >= 15);

  • اپراتور Any بررسی می‌کند که آیا حداقل یک آیتم در مجموعه یک شرط خاص را برآورده می‌کند. اگر حتی یک آیتم شرط را برقرار کند، مقدار true برگردانده می‌شود؛ در غیر این صورت false.

برعکس اپراتور All که همه باید یک شرطی داشته باشند. اپراتور Any برسی میکند حداقل یک ایتم شرط را داشته باشد. مثلا در مثال زیر اگر حتی یک نفر از اهالی شهر قزوین باشد جواب True برمیگردد.

var check= student.Any(p => p.City == "Ghazvin");

  • اپراتور Contains بررسی می‌کند که آیا یک آیتم خاص در مجموعه وجود دارد یا خیر. این اپراتور به دنبال یک مقدار مشخص در مجموعه می‌گردد و اگر آن مقدار را پیدا کند، true برمی‌گرداند.

var x=student.SingleOrDefault(x => x.Id==1);
var check= patients.Contains(x);

دانلود سورس کد پروژه از گیت هاب دانلود
جستجو کنید
دسترسی سریع
دسته ها

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد