@ avance70。不是真正的原始問題的答案,而是對avance70關於只有1個整數值的IEnumerable的問題的迴應。本來會添加它作爲評論,但我沒有足夠的代表添加評論。如果你有興趣在一個嚴格不變的順序,你有兩個選擇:
通用擴展方法:
public static IEnumerable<T> ToEnumerable<T>(this T item)
{
yield return item;
}
使用這樣的:
foreach (int i in 10.ToEnumerable())
{
Debug.WriteLine(i); //Will print "10" to output window
}
或本:
int x = 10;
foreach (int i in x.ToEnumerable())
{
Debug.WriteLine(i); //Will print value of i to output window
}
or this:
int start = 0;
int end = 100;
IEnumerable<int> seq = GetRandomNumbersBetweenOneAndNinetyNineInclusive();
foreach (int i in start.ToEnumerable().Concat(seq).Concat(end.ToEnumerable()))
{
//Do something with the random numbers, bookended by 0 and 100
}
我最近有一個像上面的開始/結束的例子,我不得不從一個序列中「提取」連續的值(使用Skip和Take),然後預先加入並附加開始和結束值。開始和結束值在最後未提取值和第一提取值(用於開始)之間以及最後提取值和第一非提取值(用於結束)之間插值。然後再次操作所得的序列,可能逆轉。
因此,如果原始序列看起來像:
我有可能提取3和4以及圖2和3和4和5之間加上內插值:
2.5 3 4 4.5
Enumerable.Repeat。使用這樣的:
foreach (int i in Enumerable.Repeat(10,1)) //Repeat "10" 1 time.
{
DoSomethingWithIt(i);
}
當然,因爲這些都是IEnumerables,它們也可以與其他的IEnumerable操作結合使用。不知道這些是否真的是「好」的想法,但他們應該完成工作。
不錯。我今天學到了一些東西! – spender 2010-05-05 13:14:37
+1。不知道Enumerable.Empty – AlwaysAProgrammer 2010-05-05 13:15:48
這正是我正在尋找! – avance70 2010-05-05 13:19:01