如果我想要一个空的枚举,我可以调用Enumerable.Empty<T>()
。但是如果我想将标量类型转换为枚举呢?
通常我会写new List<string> {myString}
将myString
传递给接受IEnumerable<string>
的函数。是否有更多的LINQ-y方式?
答案 0 :(得分:9)
您可以使用Repeat
:
var justOne = Enumerable.Repeat(value, 1);
或者只是一个阵列当然:
var singleElementArray = new[] { value };
阵列版本当然是可变的,而Enumerable.Repeat
则不是。
答案 1 :(得分:3)
有,但它的效率低于使用List或Array:
// an enumeration containing only the number 13.
var oneIntEnumeration = Enumerable.Repeat(13, 1);
答案 2 :(得分:3)
也许最短的形式是
var sequence = new[] { value };
答案 3 :(得分:1)
您也可以编写自己的扩展方法:
public static class Extensions
{
public static IEnumerable<T> AsEnumerable<T>(this T item)
{
yield return item;
}
}
现在我还没有这样做,现在我知道Enumerable.Repeat,我可能永远不会(每天都学到新东西)。但是我已经完成了这个:
public static IEnumerable<T> MakeEnumerable<T>(params T[] items)
{
return items;
}
当然,如果你用一个参数调用它,这当然有效。但也许在框架中已有类似的东西,我还没有发现。