عملگرهای تقسیم بندی Take و TakeWhile
در این بخش از آموزش LINQ عملگر تقسیم بندی Take و TakeWhileرا بررسی خواهیم کرد. این عملگر مجموعه را به دو بخش تقسیم کرده و یکی از آن ها را باز می گرداند.
عملگر Take
عمگلر Take برای گرفتن بخشی از یک مجموعه از ابتدا تا اندازه مشخص شده استفاده می شود. برای درک بهتر به مثال زیر توجه کنید:
1 2 3 4 5 6 | IList<string> strList = new List<string>(){ "One", "Two", "Three", "Four", "Five" }; var newList = strList.Take(2); foreach(var str in newList) Console.WriteLine(str); |
خروجی مثال:
1 2 | One Two |
در مثال فوق ما با استفاده از عملگر Take دو عنصر اول مجموعه strList را انتخاب کرده و در newList ذخیره کردیم.
عملگر TakeWhile
عملگر TakeWhile از ابتدای مجموعه تا اندازه مشخص شده شروع می کند و تا زمانی که یک عنصر شرط مشخص شده را برآورده نکنند یا به اندازه مشخص شده برسد، عناصر را انتخاب و باز میگرداند. اگر اولین عنصر شرط را برآورده نکند یک مجموعه خالی باز می گرداند.
این متد دو overload دارد که اولی یک ورودی از نوع Func
برای درک بهتر نحوه عملکرد این عملگر به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 | IList<string> strList = new List<string>() { "Three", "Four", "Five", "Hundred" }; var result = strList.TakeWhile(s => s.Length > 4); foreach(string str in result) Console.WriteLine(str); |
خروجی مثال:
1 | Three |
در مثال فوق متد TakeWhile فقط اولین عنصر را انتخاب می کند زیرا عنصر دوم شرط مشخص شده را برآورده نمی کند. در مثال زیر می توانید نحوه استفاده از overload دوم این متد را مشاهده کنید:
1 2 3 4 5 6 7 8 9 10 | IList<string> strList = new List<string>() { "One", "Two", "Three", "Four", "Five", "Six" }; var resultList = strList.TakeWhile((s, i) => s.Length > i); foreach(string str in resultList) Console.WriteLine(str); |
خروجی مثال:
1 2 3 4 | One Two Three Four |
هیچ نظری ثبت نشده است