C# LINQ میں سوالات لکھنا

C Linq My Swalat Lk Na



ایس کیو ایل کی طرح، استفسار کی ترکیب کا استعمال کرتے ہوئے C# LINQ میں سوالات لکھنا ممکن ہے۔ ان سوالات کو ڈیٹا بیس سے ڈیٹا حاصل کرنے اور تیسرے فریق کے صارفین کو ویب پر ڈسپلے کرنے کے لیے ویب پر C# ڈیٹا بیس ایپلی کیشنز میں استعمال کیا جاتا ہے۔ اس گائیڈ میں، ہم کچھ LINQ سوالات پر بات کریں گے جو SQL سے ملتی جلتی ہیں۔ اس کے لیے ہم ایک فہرست ڈیٹا سورس بنائیں گے اور اس میں سوالات کا اطلاق کریں گے۔

استفسار کا نحو:

آئیے عام نحو کو دیکھتے ہیں:

سے تکرار کرنے والا میں ڈیٹا کا ذریعہ
منتخب کریں تکرار کرنے والا ;

یہاں:







  1. Data_Source وہ فہرست ہو سکتی ہے جس میں ڈیٹا ہوتا ہے۔
  2. ایٹریٹر کو ڈیٹا_ سورس سے عناصر لانے کے لیے استعمال کیا جاتا ہے۔

ڈیٹا کا ذریعہ

اس پوری گائیڈ میں، ہم ریکارڈز کی درج ذیل فہرست کو ڈیٹا سورس کے طور پر استعمال کریں گے اور تمام سوالات صرف اس ڈیٹا سورس پر لاگو ہوتے ہیں۔ یقینی بنائیں کہ آپ اس کوڈ کو اپنے ماحول میں چلاتے ہیں اور استفسار کے بیانات کو درج ذیل مثالوں کے ساتھ ایک ایک کرکے تبدیل کرتے ہیں جن پر ہم بحث کرنے جا رہے ہیں:



استعمال کرتے ہوئے سسٹم ;
استعمال کرتے ہوئے سسٹم۔کلیکشنز۔جنرک ;
استعمال کرتے ہوئے سسٹم۔لنق ;
استعمال کرتے ہوئے سسٹم۔ کلیکشنز ;

عوام کلاس حسابات
{
عوام جامد باطل مرکزی ( )
{
// فہرست تخلیق
ملک کی_قیمتیں درج کریں۔ = نئی فہرست ( ) {

// فہرست میں 5 ریکارڈز شامل کریں۔
نئی قیمتیں ( ) { آئٹم = 'پھل' ،مقام = 'امریکا' ، مقدار = 100 ، لاگت = 345.78 } ,
نئی قیمتیں ( ) { آئٹم = 'گری دار میوے' ،مقام = 'بھارت' ، مقدار = 200 ، لاگت = 3645.78 } ,
نئی قیمتیں ( ) { آئٹم = 'دوسرے' ،مقام = 'برطانیہ' ، مقدار = 500 ، لاگت = 90.68 } ,
نئی قیمتیں ( ) { آئٹم = 'تیل' ،مقام = 'امریکا' ، مقدار = 100 ، لاگت = 345.78 } ,
نئی قیمتیں ( ) { آئٹم = 'مرچیں' ،مقام = 'امریکا' ، مقدار = 10 ، لاگت = 67.89 } ,
} ;


ہر ایک کے لئے ( تھا میں میں ملکی_قیمتیں )
{
تسلی . رائٹ لائن ( میں . آئٹم + ' + میں . مقام + ' + میں . مقدار + ' + میں . لاگت ) ;
}
}
}
عوام کلاس قیمتیں {
عوام تار آئٹم { حاصل کریں ; سیٹ ; }
عوام تار مقام { حاصل کریں ; سیٹ ; }
عوام int مقدار { حاصل کریں ; سیٹ ; }
عوام دگنا لاگت { حاصل کریں ; سیٹ ; }
}

ریکارڈز:







وضاحت:

1. درج ذیل صفات کے ساتھ قیمتیں بنائیں:

2. ایک اور کلاس بنائیں جو کہ مرکزی طریقہ کے ساتھ 'حساب' ہے اور پانچ ریکارڈ کے ساتھ ملک کی قیمتوں کی فہرست بنائیں۔



منتخب کریں۔

بنیادی طور پر، 'منتخب' ایک پروجیکشن آپریٹر ہے جو مخصوص ڈیٹا سورس سے صفات کا انتخاب کرتا ہے۔ استفسار 'سے' سے شروع ہوتا ہے۔ پھر، ہم تکرار کرنے والے کی وضاحت کرتے ہیں جو ڈیٹا سورس پر تکرار کرتا ہے۔ پھر، 'منتخب' آپریٹر کی وضاحت کی گئی ہے۔

نحو:

تمام صفات: Data_Source میں iterator سے iterator منتخب کریں؛

مخصوص وصف: Data_Source میں iterator سے iterator.attribute کو منتخب کریں۔

مثال 1:

آئیے فہرست سے تمام ریکارڈز کو منتخب کرنے کے لیے ایک سوال لکھتے ہیں۔

استعمال کرتے ہوئے سسٹم ;
استعمال کرتے ہوئے سسٹم۔کلیکشنز۔جنرک ;
استعمال کرتے ہوئے سسٹم۔لنق ;
استعمال کرتے ہوئے سسٹم۔ کلیکشنز ;

عوام کلاس حسابات
{
عوام جامد باطل مرکزی ( )
{
// فہرست تخلیق
ملک کی_قیمتیں درج کریں۔ = نئی فہرست ( ) {

// فہرست میں 5 ریکارڈز شامل کریں۔
نئی قیمتیں ( ) { آئٹم = 'پھل' ،مقام = 'امریکا' ، مقدار = 100 ، لاگت = 345.78 } ,
نئی قیمتیں ( ) { آئٹم = 'گری دار میوے' ،مقام = 'بھارت' ، مقدار = 200 ، لاگت = 3645.78 } ,
نئی قیمتیں ( ) { آئٹم = 'دوسرے' ،مقام = 'برطانیہ' ، مقدار = 500 ، لاگت = 90.68 } ,
نئی قیمتیں ( ) { آئٹم = 'تیل' ،مقام = 'امریکا' ، مقدار = 100 ، لاگت = 345.78 } ,
نئی قیمتیں ( ) { آئٹم = 'مرچیں' ،مقام = 'امریکا' ، مقدار = 10 ، لاگت = 67.89 } ,
} ;

// استفسار میں آپریٹر کو منتخب کریں۔
تھا ڈیٹا = سے میں میں ملکی_قیمتیں
منتخب کریں میں ;

ہر ایک کے لئے ( تھا میں میں ڈیٹا )
{
تسلی . رائٹ لائن ( میں . آئٹم + ' + میں . مقام + ' + میں . مقدار + ' + میں . لاگت ) ;

}
}
}
عوام کلاس قیمتیں {
عوام تار آئٹم { حاصل کریں ; سیٹ ; }
عوام تار مقام { حاصل کریں ; سیٹ ; }
عوام int مقدار { حاصل کریں ; سیٹ ; }
عوام دگنا لاگت { حاصل کریں ; سیٹ ; }
}

آؤٹ پٹ:

یہاں، ہم نے 'منتخب' استفسار میں کوئی خاصیت نہیں بتائی۔ ہم نے ایٹریٹر کا استعمال کرتے ہوئے 'فوریچ' لوپ کے اندر موجود استفسار (ڈیٹا) سے تمام صفات حاصل کیں۔

مثال 2:

اب، 'منتخب' آپریٹر کے اندر آئٹم کی خصوصیت کی وضاحت کرکے آئٹمز حاصل کریں۔ استفسار یہ ہے  ' ملک کی قیمتوں میں i سے i.item منتخب کریں۔ '

// استفسار میں آئٹم کی خصوصیت حاصل کرنے کے لیے آپریٹر کو منتخب کریں۔
تھا ڈیٹا = سے میں میں ملکی_قیمتیں
منتخب کریں میں . آئٹم ;

ہر ایک کے لئے ( تھا میں میں ڈیٹا )
{
تسلی . رائٹ لائن ( میں ) ;

}

آؤٹ پٹ:

لائن # 21 - لائن # 29:

2. کہاں

اگر آپ کچھ شرائط کی بنیاد پر ڈیٹا کو فلٹر کرنا چاہتے ہیں، تو آپ استفسار میں 'سلیکٹ' شق کے ساتھ 'کہاں' آپریٹر استعمال کر سکتے ہیں۔ لیکن پہلے 'جہاں' آپریٹر استعمال کیا جاتا ہے اور پھر منتخب آپریٹر کی وضاحت کی جاتی ہے۔

نحو:

آئیے دیکھتے ہیں کہ LINQ استفسار کے اندر 'کہاں' آپریٹر کا استعمال کیسے کریں۔

سے تکرار کرنے والا میں ڈیٹا کا ذریعہ
کہاں حالت / s
منتخب کریں تکرار کرنے والا . وصف ;

مثال 1: سنگل کنڈیشن

آئیے آئٹم کے وصف کی بنیاد پر ریکارڈز کو فلٹر کریں۔ شرط کے طور پر 'جہاں' آپریٹر میں (==) آپریٹر کے برابر کا استعمال کریں اور تکرار کرنے والے کا موازنہ 'چلیز' سے کریں۔ لہذا، 'مرچوں' سے متعلق ریکارڈز کا انتخاب کیا جاتا ہے۔

سوال یہ ہے کہ ' ملکی_قیمتوں میں i سے
جہاں i.item == 'مرچیں'
میں کو منتخب کریں'

// اس کے ساتھ منتخب کریں جہاں ریکارڈ کو فلٹر کرنا ہے۔
تھا ڈیٹا = سے میں میں ملکی_قیمتیں
کہاں میں . آئٹم == 'مرچیں'
منتخب کریں میں ;

ہر ایک کے لئے ( تھا میں میں ڈیٹا )
{
تسلی . رائٹ لائن ( میں . آئٹم + ' + میں . مقام + ' + میں . مقدار + ' + میں . لاگت ) ;

}

آؤٹ پٹ:

'چلیز' آئٹم کے ساتھ صرف ایک ریکارڈ ہے۔

لائن # 21 - لائن # 30:

مثال 2: متعدد شرائط

آئیے مقام اور مقدار کی خصوصیات کی بنیاد پر ریکارڈز کو فلٹر کرتے ہیں۔ مقدار 50 سے زیادہ اور 300 سے کم ہونی چاہیے۔ مقام 'USA' ہونا چاہیے۔

سوال یہ ہے کہ ' ملکی_قیمتوں میں i سے
جہاں i.quantity> 50
جہاں i.quantity <300
جہاں i.location == 'USA'
میں کو منتخب کریں'

//متعدد شرائط بتا کر ریکارڈز کو فلٹر کرنے کے لیے منتخب کریں۔
تھا ڈیٹا = سے میں میں ملکی_قیمتیں
کہاں میں . مقدار > پچاس
کہاں میں . مقدار < 300
کہاں میں . مقام == 'امریکا'
منتخب کریں میں ;

ہر ایک کے لئے ( تھا میں میں ڈیٹا )
{
تسلی . رائٹ لائن ( میں . آئٹم + ' + میں . مقام + ' + میں . مقدار + ' + میں . لاگت ) ;

}

آؤٹ پٹ:

دو ریکارڈ ایسے ہیں جو پچھلی شرائط سے مماثل ہیں۔

لائن # 21 - لائن # 32:

مثال 3: اور (&&) آپریٹر

ہم ایک وقت میں متعدد شرائط کی وضاحت کرنے کے لیے 'اور (&&)' آپریٹر کی وضاحت کر سکتے ہیں۔ اگر تمام شرائط درست ہیں تو، تمام شرائط کو پورا کرنے والے ریکارڈز استفسار کے ذریعہ واپس کردیئے جاتے ہیں۔

اس مثال میں، ہم ریکارڈز کو منتخب کرتے ہیں اگر مقدار 20 سے زیادہ ہے اور لاگت 67.89 ہے۔

سوال یہ ہے کہ ' ملکی_قیمتوں میں i سے
جہاں i.quantity <20 && i.cost == 67.89
میں کو منتخب کریں'

تھا ڈیٹا = سے میں میں ملکی_قیمتیں
کہاں میں . مقدار < بیس && میں . لاگت == 67.89
منتخب کریں میں ;

ہر ایک کے لئے ( تھا میں میں ڈیٹا )
{
تسلی . رائٹ لائن ( میں . آئٹم + ' + میں . مقام + ' + میں . مقدار + ' + میں . لاگت ) ;

}

آؤٹ پٹ:

صرف ایک ریکارڈ ہے جس کی مقدار 20 سے کم ہے اور اس کی قیمت 67.89 ہے۔

لائن # 21 - لائن # 29:

مثال 4: یا (||) آپریٹر

'یا (||)' آپریٹر کو ایک وقت میں متعدد شرائط کی وضاحت کے لیے بھی استعمال کیا جاتا ہے۔ اگر کم از کم ایک شرط درست ہے تو، اس شرط کو پورا کرنے والے ریکارڈ واپس کر دیے جاتے ہیں۔

اس مثال میں، ہم ریکارڈز کو منتخب کرتے ہیں اگر مقدار 300 سے زیادہ ہے یا مقام 'ٹوکیو' ہے۔

سوال یہ ہے کہ ' ملکی_قیمتوں میں i سے
جہاں i.quantity > 300 || i.location == 'ٹوکیو'
میں کو منتخب کریں'

تھا ڈیٹا = سے میں میں ملکی_قیمتیں
کہاں میں . مقدار > 300 || میں . مقام == 'ٹوکیو'
منتخب کریں میں ;

ہر ایک کے لئے ( تھا میں میں ڈیٹا )
{
تسلی . رائٹ لائن ( میں . آئٹم + ' + میں . مقام + ' + میں . مقدار + ' + میں . لاگت ) ;

}

آؤٹ پٹ:

صرف ایک ریکارڈ ہے جس کی مقدار 300 سے زیادہ ہے (پہلی شرط مماثل ہے)۔

لائن # 21 - لائن # 29:

3. آرڈر بذریعہ

اگر آپ ان ریکارڈوں کو ترتیب دینا چاہتے ہیں جو LINQ استفسار کے ذریعے واپس کیے گئے ہیں صعودی یا نزولی ترتیب میں کسی بھی صفات میں اقدار کی بنیاد پر، آپ استفسار میں 'آرڈر از' آپریٹر استعمال کر سکتے ہیں۔ آپ کو 'منتخب' آپریٹر سے پہلے اس آپریٹر کی وضاحت کرنے کی ضرورت ہے۔

نحو:

آئیے دیکھتے ہیں کہ LINQ استفسار کے اندر 'آرڈر از' آپریٹر کا استعمال کیسے کریں۔

صعودی ترتیب:

سے تکرار کرنے والا میں ڈیٹا کا ذریعہ
ترتیب کی طرف سے تکرار کرنے والا . وصف چڑھتے ہوئے
منتخب کریں تکرار کرنے والا ;

ترتیب نزولی:

سے تکرار کرنے والا میں ڈیٹا کا ذریعہ
ترتیب کی طرف سے تکرار کرنے والا . وصف نزول
منتخب کریں تکرار کرنے والا ;

مثال 1: صعودی ترتیب

ڈیٹا سورس (فہرست) سے تمام انتسابات کو منتخب کریں اور مقدار کے انتساب میں اقدار کی بنیاد پر انہیں صعودی ترتیب میں واپس کریں۔

سوال یہ ہے کہ ' ملکی_قیمتوں میں i سے
ترتیب سے i. مقدار بڑھتے ہوئے
میں کو منتخب کریں'

تھا ڈیٹا = سے میں میں ملکی_قیمتیں
میں کی طرف سے حکم . مقدار چڑھتے ہوئے
منتخب کریں میں ;

ہر ایک کے لئے ( تھا میں میں ڈیٹا )
{
تسلی . رائٹ لائن ( میں . آئٹم + ' + میں . مقام + ' + میں . مقدار + ' + میں . لاگت ) ;

}

آؤٹ پٹ:

لائن # 21 - لائن # 29:

مثال 2: ترتیب نزولی

ڈیٹا سورس (فہرست) سے تمام انتسابات کو منتخب کریں اور لاگت کے انتساب میں اقدار کی بنیاد پر نزولی ترتیب میں واپس کریں۔

سوال یہ ہے کہ ' ملکی_قیمتوں میں i سے
آرڈر کے ذریعے i.cost decending
میں کو منتخب کریں'

تھا ڈیٹا = سے میں میں ملکی_قیمتیں
میں کی طرف سے حکم . لاگت نزول
منتخب کریں میں ;

ہر ایک کے لئے ( تھا میں میں ڈیٹا )
{
تسلی . رائٹ لائن ( میں . آئٹم + ' + میں . مقام + ' + میں . مقدار + ' + میں . لاگت ) ;

}

آؤٹ پٹ:

لائن # 21 - لائن # 29:

4. حد

ایس کیو ایل میں حد ان ریکارڈوں کو محدود کرتی ہے جو استفسار کے ذریعے واپس کیے جاتے ہیں۔ یہ سرفہرست ریکارڈز واپس کرتا ہے جو استفسار کے ذریعے واپس کیے جاتے ہیں۔ LINQ میں، ہم Take() آپریٹر کے ساتھ Skip() کو استعمال کر کے اسے حاصل کر سکتے ہیں۔ Take() کو ریکارڈز کی مخصوص تعداد ملتی ہے۔ Skip() کا استعمال ابتدائی ریکارڈ نمبر بتانے کے لیے کیا جاتا ہے۔ اس طرح، ہم LINQ میں 'حد' فعالیت حاصل کر سکتے ہیں۔

نحو:

( سے تکرار کرنے والا میں ڈیٹا کا ذریعہ
منتخب کریں تکرار کرنے والا ) . چھوڑ دو ( n ) . لے لو ( n ) ;
  1. Skip() کا استعمال ریکارڈز کو چھوڑنے اور بقیہ ریکارڈ واپس کرنے کے لیے کیا جاتا ہے۔ یہ ایک عدد لیتا ہے جو چھوڑے جانے والے عناصر کی تعداد بتاتا ہے۔ ہمارے معاملے میں، یہ 0 ہے۔
  2. Take() کو پہلے ریکارڈ سے 'n' نمبر لینے کے لیے استعمال کیا جاتا ہے۔

مثال:

پانچ ریکارڈز میں سے پہلے تین ریکارڈز کو منتخب کریں جو استفسار کے ذریعے واپس کیے گئے ہیں۔

سوال یہ ہے کہ ' (ملکی_قیمتوں میں میں سے
i کو منتخب کریں۔ چھوڑیں(0)۔ لیں(3)'

تھا ڈیٹا = ( سے میں میں ملکی_قیمتیں
منتخب کریں میں ) . چھوڑ دو ( 0 ) . لے لو ( 3 ) ;

ہر ایک کے لئے ( تھا میں میں ڈیٹا )
{
تسلی . رائٹ لائن ( میں . آئٹم + ' + میں . مقام + ' + میں . مقدار + ' + میں . لاگت ) ;

}

}

آؤٹ پٹ:

لائن # 21 - لائن # 28:

نتیجہ

ہم نے سیکھا کہ سوالات کو C# LINQ میں کیسے لکھنا ہے جو SQL سے ملتا جلتا ہے۔ اس ٹیوٹوریل کے حصے کے طور پر، ہم نے تبادلہ خیال کیا کہ ڈیٹا سورس سے ریکارڈز کو منتخب کرنے کے لیے 'منتخب' آپریٹر کو کیسے استعمال کیا جائے۔ استفسار کے ذریعے واپس کیے گئے ریکارڈز کو فلٹر کرنے کے لیے، ہم نے شرائط بتا کر 'جہاں' آپریٹر کا استعمال کیا۔ پھر، ہم نے سیکھا کہ 'آرڈر از' آپریٹر کے ساتھ استفسار کے ذریعے واپس آنے والے ریکارڈز کو کیسے ترتیب دیا جائے۔ آخر میں، ریکارڈ کو محدود کرنے کے لیے، ہم نے Skip() اور Take() آپریٹرز کا استعمال کیا۔