我通常使用数组语法从单个值创建序列,如下所示:
IEnumerable<string> sequence = new string[] { "abc" };
或使用新列表。我想听听是否有人有更富有表现力的方式来做同样的事情。
答案 0 :(得分:139)
您的示例不是空序列,它是具有一个元素的序列。要创建一个空字符串序列,您可以
var sequence = Enumerable.Empty<string>();
编辑 OP明确表示他们希望创建单一值。在那种情况下
var sequence = Enumerable.Repeat("abc",1);
答案 1 :(得分:63)
我喜欢你的建议,但省略了数组类型:
var sequence = new[] { "abc" };
答案 2 :(得分:21)
甚至更短,
string[] single = { "abc" };
我会制作一个扩展方法:
public static T[] Yield<T>(this T item)
{
T[] single = { item };
return single;
}
甚至更好更短,只是
public static IEnumerable<T> Yield<T>(this T item)
{
yield return item;
}
也许这正是Enumerable.Repeat
正在做的事情。
答案 3 :(得分:5)
或只是创建一个方法
public static IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
if(items == null)
yield break;
foreach (T mitem in items)
yield return mitem;
}
或
public static IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
return items ?? Enumerable.Empty<T>();
}
用法:
IEnumerable<string> items = CreateEnumerable("single");