C# में TakeWhile() मेथड System.Linq नेमस्पेस का एक एक्सटेंशन मेथड है जो किसी अनुक्रम से तब तक तत्व लौटाता है जब तक कि निर्दिष्ट शर्त (predicate) सत्य रहती है। जैसे ही शर्त असत्य होती है, तत्वों को लेना बंद कर दिया जाता है।
उदाहरण
मान लीजिए हमारे पास निम्न सरणी है:
int[] arr = { 25, 40, 65, 70 };
30 से छोटे तत्वों को लेना (पहले तत्व से शुरू करके जब तक शर्त पूरी होती है):
var result = arr.TakeWhile(element => element < 30);
पूर्ण कोड उदाहरण
using System;
using System.Linq;
public class Demo
{
public static void Main()
{
int[] arr = { 25, 40, 65, 70 };
// 30 से छोटे तत्व लें (केवल पहला तत्व 25 ही शर्त पूरी करता है)
var values = arr.TakeWhile(element => element < 30);
Console.WriteLine("30 से छोटे तत्व:");
foreach (int item in values)
{
Console.WriteLine(item);
}
// एक और उदाहरण: स्ट्रिंग सरणी के साथ
string[] fruits = { "apple", "apricot", "banana", "avocado" };
var aFruits = fruits.TakeWhile(f => f.StartsWith("a"));
Console.WriteLine("\n'a' से शुरू होने वाले फल (लगातार):");
foreach (string fruit in aFruits)
{
Console.WriteLine(fruit);
}
}
}
आउटपुट
30 से छोटे तत्व: 25 'a' से शुरू होने वाले फल (लगातार): apple apricot
TakeWhile() बनाम Where()
| मेथड | व्यवहार |
|---|---|
TakeWhile() | पहले तत्व से शुरू करके लगातार तत्व लेता है जब तक शर्त सत्य है |
Where() | पूरे अनुक्रम को फ़िल्टर करता है, सभी मेल खाने वाले तत्व लौटाता है |
उपरोक्त उदाहरण में, Where(f => f.StartsWith("a")) से "apple", "apricot", "avocado" तीनों मिलते, लेकिन TakeWhile() केवल पहले दो को लौटाता है क्योंकि "banana" शर्त तोड़ देता है।
महत्वपूर्ण बिंदु
TakeWhile()डिफर्ड एक्जीक्यूशन का उपयोग करता है- दूसरा ओवरलोड इंडेक्स भी प्रदान करता है:
TakeWhile((element, index) => ...) - यदि पहला तत्व ही शर्त पूरी नहीं करता, तो खाली अनुक्रम लौटाया जाता है