将来の読者のために。
ここに小さな例があります。
private static void RunTakeSkipExample()
{
int takeSize = 10; /* set takeSize to 10 */
/* create 25 exceptions, so 25 / 10 .. means 3 "takes" with sizes of 10, 10 and 5 */
ICollection<ArithmeticException> allArithExceptions = new List<ArithmeticException>();
for (int i = 1; i <= 25; i++)
{
allArithExceptions.Add(new ArithmeticException(Convert.ToString(i)));
}
int counter = 0;
IEnumerable<ArithmeticException> currentTakeArithExceptions = allArithExceptions.Skip(0).Take(takeSize);
while (currentTakeArithExceptions.Any())
{
Console.WriteLine("Taking! TakeSize={0}. Counter={1}. Count={2}.", takeSize, (counter + 1), currentTakeArithExceptions.Count());
foreach (ArithmeticException ae in currentTakeArithExceptions)
{
Console.WriteLine(ae.Message);
}
currentTakeArithExceptions = allArithExceptions.Skip(++counter * takeSize).Take(takeSize);
}
}
出力:
Taking! TakeSize=10. Counter=1. Count=10.
1
2
3
4
5
6
7
8
9
10
Taking! TakeSize=10. Counter=2. Count=10.
11
12
13
14
15
16
17
18
19
20
Taking! TakeSize=10. Counter=3. Count=5.
21
22
23
24
25
各例外の .Message で確認して、それぞれの例外が「取得」されたことを確認できます。
そして、映画の名言!
しかし、私が持っているのは非常に特殊なスキルのセットです。長いキャリアの中で身につけたスキル。あなたのような人々にとって私を悪夢にするスキル。