Любимый способ создать новую последовательность IEnumerable из одного значения?
обычно я создаю последовательность из одного значения с помощью синтаксиса массива, например:
IEnumerable<string> sequence = new string[] { "abc" };
или с помощью нового списка. Я хотел бы услышать, Есть ли у кого-нибудь более выразительный способ сделать то же самое.
4 ответа:
ваш пример не пустая последовательность, то последовательность с одним элементом. Чтобы создать пустую последовательность строк, вы можете сделать
var sequence = Enumerable.Empty<string>();
EDIT OP уточнил, что они хотели создать одно значение. В таком случае
var sequence = Enumerable.Repeat("abc",1);
или еще короче,
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
делает под капотом.
или просто создать метод
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");