উত্তর:
Enumerable.Range(0, 11);
একটি নির্দিষ্ট ব্যাপ্তির মধ্যে অবিচ্ছেদ্য সংখ্যার ক্রম তৈরি করে।
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.range.aspx
আপনি একটি সাধারণ ফাংশন তৈরি করতে পারেন। এটি আরও জটিল ক্রমের জন্য কাজ করবে। অন্যথায় করা Enumerable.Range
উচিত।
IEnumerable<int> Sequence(int n1, int n2)
{
while (n1 <= n2)
{
yield return n1++;
}
}
OddSequence
EvenSequence
বা অন্যান্য কাস্টম রেঞ্জ। if (++n1 % 2 == 0) yield return n1
, উদাহরণ স্বরূপ. এটি কয়েক দিন হয়েছে;)
বিরল ব্যবহৃত ইন্ডেক্সার ওভারলোডের সাথে লিনক প্রক্ষেপণ (i) :
(new int[11]).Select((o,i) => i)
আমি এই পদ্ধতিটি এর নমনীয়তার জন্য পছন্দ করি।
উদাহরণস্বরূপ, যদি আমি সন্ধ্যায় চাই:
(new int[11]).Select((item,i) => i*2)
বা যদি আমি এক ঘন্টা 5 মিনিটের ইনক্রিমেন্ট চাই:
(new int[12]).Select((item,i) => i*5)
বা স্ট্রিং:
(new int[12]).Select((item,i) => "Minute:" + i*5)
সি # 8.0 এ আপনি সূচক এবং ব্যাপ্তি ব্যবহার করতে পারেন
উদাহরণ স্বরূপ:
var seq = 0..2;
var array = new string[]
{
"First",
"Second",
"Third",
};
foreach(var s in array[seq])
{
System.Console.WriteLine(s);
}
// Output: First, Second
অথবা আপনি যদি তৈরি করতে চান IEnumerable<int>
তবে আপনি এক্সটেনশনটি ব্যবহার করতে পারেন:
public static IEnumerable<int> ToEnumerable(this Range range)
{
for (var i = range.Start.Value; i < range.End.Value; i++)
{
yield return i;
}
}
...
var seq = 0..2;
foreach (var s in seq.ToEnumerable())
{
System.Console.WriteLine(s);
}
// Output: 0, 1
পিএস তবে 'শেষ থেকে সূচকগুলি' সম্পর্কে সতর্ক থাকুন । উদাহরণস্বরূপ, ToEnumerable এক্সটেনশন পদ্ধতিটি কাজ করছে না var seq = ^2..^0
।
মূলত এখানে উত্তর ।
আপনি যদি কোনও ভেরিয়েবল IEnumerable<int>
থেকে সংখ্যার ( ) সংখ্যা ক্রমিক হিসাবে গণ্য করতে চান তবে চেষ্টা করুন0
end
Enumerable.Range(0, ++10);
ব্যাখ্যায়, 0 থেকে 10 পর্যন্ত সংখ্যার ক্রম পেতে, আপনি ক্রমটি 0 থেকে শুরু করতে চান (মনে রাখবেন যে সেখানে 0 এবং 10 এর মধ্যে 11 সংখ্যা রয়েছে)।
আপনি যদি সীমাহীন লিনিয়ার সিরিজটি চান তবে আপনি একটি ফাংশন লিখতে পারেন
IEnumerable<int> Series(int k = 0, int n = 1, int c = 1)
{
while (true)
{
yield return k;
k = (c * k) + n;
}
}
যা আপনি পছন্দ করতে পারেন
var ZeroTo1000 = Series().Take(11);
আপনি যদি কোনও ফাংশন চান তবে বার বার কল করতে পারেন ইনক্রিমেন্টিং নম্বর উত্পন্ন করতে, সম্ভবত আপনি কিছু চান।
using System.Threading;
private static int orderNumber = 0;
int Seq()
{
return Interlocked.Increment(ref orderNumber);
}
আপনি যখন কল Seq()
করবেন তখন এটি পরবর্তী অর্ডার নম্বর এবং কাউন্টারকে বাড়িয়ে দেবে incre
আমার কোডগুলিতে আমার এই ফাংশনগুলি রয়েছে
private static IEnumerable<int> FromZero(this int count)
{
if (count <= 0)
yield break;
for (var i = 0; i < count; i++)
{
yield return i;
}
}
private static IEnumerable<int> FromOne(this int count)
{
if (count <= 0)
yield break;
for (var i = 1; i <= count; i++)
{
yield return i;
}
}
এটি (i) কোডের জন্য কিছু হ্রাস করতে সহায়তা করে।
IEnumerable<int>
, একটি কল অন্তর্ভুক্ত.ToArray()
।