创建一个枚举

时间:2011-10-27 20:02:56

标签: c# linq c#-4.0

如果我想要一个空的枚举,我可以调用Enumerable.Empty<T>()。但是如果我想将标量类型转换为枚举呢?

通常我会写new List<string> {myString}myString传递给接受IEnumerable<string>的函数。是否有更多的LINQ-y方式?

4 个答案:

答案 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;
}

当然,如果你用一个参数调用它,这当然有效。但也许在框架中已有类似的东西,我还没有发现。