لوگوی سایت
  • خانه
  • محصولات
  • مطالب ‌و ‌مقالات
  • تماس‌ با ‌ما
  • درباره ما
  • سفارش برنامه‌نویسی
  • خدمات غیرحضوری
ورود / ثبت نام
خانه / مطالب و مقالات / موضوع /
تفاوت SQL و LINQ و Lambda

تفاوت SQL و LINQ و Lambda

توسط مدیر سایت

چهارشنبه, 12 تیر 1398

0

56639

مدتی برایم این پرسش مطرح شده بود که فرق LINQ و Lambda چیست؟

آیا LINQ همان Lambda ست ؟ یا Lambda همان LINQ ؟ یا کلاً متفاوتند ؟

تا قبل از ارائه نسخه visual studio 2008 معمولاً برنامه نویسان برای انجام عملیات CRUD یا همان فرمانهای select، insert،delete،update در دیتابیس از شیوه کوئری نویسی  استفاده میکردند (هنوز هم استفاده میشود) که به آنها دستورات SQL (Structured Query Language) گفته میشود.

این دستورات SQL به دو دسته اصلی تقسیم میشوند :

 

  • دستوراتی برای دستکاری و ویرایش داده ها یا DML (Data Manipulation Language):

این دستورات شامل SELECT،UPDATE،DELETE،INSERT می باشد .

 

  • دستوراتی برای تعریف داده ها یا DDL (Data Definition Language)

این دستورات شامل فرمانهایی چون CREATE DATABASE،ALTER DATABASE،CREATE TABLE،ALTER TABLE،DROPTABLE،CREATE INDEX و DROP INDEX می باشد .

در مورد فرمانهای DML و DDL در پستهای بعدی، مفصلتر صحبت می کنیم.

نمونه ای از دستور Select SQL برای استخراج اطلاعات از جدول :

Select * from table1 where id>10

 

بعدها و به همراه DotNet Framework 3.5 که همزمان با  ویژوال استودیو 2008 ارائه شده بود، شیوه جدید کوئری نویسی قدرتمندی معرفی شد که متناسب با Syntax زبانهای C# و VB در محیط کد نویسی از آن استفاده میشود و LINQ (Language-Integrated Query) نامیده شد.

تفاوت عمده LINQ با فرمانهای SQL این می باشد که بوسیله LINQ می توان از هر نوع منبع داده، واکشی اطلاعات را انجام داد.

فرض کنید که لازمست از مجموعه اعداد موجود در یک آرایه ، اعداد زوج را استخراج نمایید .

تا قبل از تولد LINQ ، برنامه نویسان به شیوه ای شبیه کد زیر سعی میکردند که پاسخ را استخراج کنند:

#C

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

foreach(int num in numbers)
{
   if (num % 2 == 0)
      evenNumbers.Add(num);
}

 

VB

Dim numbers() As Integer = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

For Each num As Integer In numbers
   If num Mod 2 = 0 Then
	  evenNumbers.Add(num)
   End If
Next num

 

اما بعد از بدنیا آمدن LINQ ، استفاده از آن بجای فرمانهای SQL  راحتتر و مناسبتر بود. اگر به syntax فرمانهای LINQ در زبانهای C# , VB در کدهای زیر دقت نمایید، متوجه میشویم که توابعی که درون دستور LINQ استفاده شده، از Syntax زبان برنامه‌نویسی پیروی کرده است :

یکی دیگر از تفاوتهای LINQ و SQL این است که دستورات LINQ توسط Debuger ویژوال استودیو قابل شناسایی بوده و خطاهای احتمالی را به برنامه نویس گوشزد می نماید.

#C

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var evenNumbers = from n in numbers
                  where n % 2 == 0
                  select n;

 

VB

Dim numbers() As Integer = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

Dim evenNumbers = From n In numbers
                  Where n Mod 2 = 0
                  Select n

 

حالا پیاده سازی همان سناریو بالا به روش زیر توجه نمایید:

#C

var evenNumbers = numbers.Where(n => n % 2 == 0);

 

VB

Dim evenNumbers = numbers.Where(function(n) n Mod 2 = 0);

 

به روش پیاده سازی کوئری به شکل بالا، اصطلاحاً Lambda گفته میشود. بعبارتی کامپایلر اجازه میدهد که به هرکدام از دو روش فوق کد کوئری نویسی را پیاده سازی نماییم. چنانچه به کد توجه نمایید، عبارت where n % 2 == 0  به شکل Where(n => n % 2 == 0) در زبان C#  نوشته شده و در زبان VB عبارت   Where n Mod 2 = 0 به صورت Where(function(n) n Mod 2 = 0) نوشته شده است. این شکل عملگر n => n یا function(n) n ، عملگرهای لامبدا هستند.

بنابراین معلوم میشود که lambda مشابه LINQ با Syntax اختصاصی خود می باشد. 

در حقیقت کاربرد هر کدام از شکلهای بالا در نحوه کوئری نویسی، کاملاً سلیقه ای و شخصی و بر اساس علاقه برنامه نویس می باشد، و از نظر Performance هیچ تفاوتی در استفاده از LINQ یا Lambda وجود ندارد و نهایتاً کامپایلر هر دوی آنها را به فرمان SQL ترجمه و سپس  اجرا می نماید.

    0 دیدگاه


ارسال دیدگاه

Commentator Avatar

مطالب محبوب

  • blog thumbnail
    تفاوت SQL و LINQ و Lambda

    56639

  • blog thumbnail
    Dot NET MAUI چیست؟

    19877

  • blog thumbnail
    تغییرات ویژوال استودیو 2019

    15309

  • blog thumbnail
    Pseudocode چیست و چگونه شما را به توسعه دهنده تبدیل می کند؟

    5038

  • blog thumbnail
    داده، اطلاعات، دانش و خرد

    4362

  • blog thumbnail
    کوئری نویسی و دستورات DDL و DML

    4334

  • blog thumbnail
    دستورات Create, Alter, Drop, Truncate

    3320

مطالب جدیدتر

  • Dot NET MAUI چیست؟
    شنبه, 31 اردیبهشت 1401

  • داده، اطلاعات، دانش و خرد
    جمعه, 11 تیر 1400

  • Pseudocode چیست و چگونه شما را به توسعه دهنده تبدیل می کند؟
    پنجشنبه, 13 آذر 1399

شاخص‌های نرم‌افزارهای کدفا


امنیت بالا
کیفیت مثال‌زدنی
پشتیبانی
نمونه کارها
درخواست و سفارش نرم‌افزار و برنامه‌نویسی

نرم‌افزارهای کدفا - 2019 ©
تمامی حقوق مادی و معنوی این سایت و نرم افزارهای موجود متعلق به نرم‌افزارهای کدفا می باشد.
خوشحال می شویم که از مطالب در صفحاتتان استفاده نموده و آدرس سایت ما را در کنار مطلب درج و لینک نمائید.

تماس با ما
info.Codingfa@gmail.com
0917-200-5339
تلگرام / واتساپ / ایتا