是否有一种常见的方法将单个类型的项传递给T需要IEnumerable<T>参数的方法 ?语言是C#,框架版本2.0.
目前我正在使用一个辅助方法(它是.Net 2.0,所以我有一大堆类似于LINQ的转换/投射辅助方法),但这看起来很愚蠢:
public static class IEnumerableExt
{
// usage: IEnumerableExt.FromSingleItem(someObject);
public static IEnumerable<T> FromSingleItem<T>(T item)
{
yield return item;
}
}
Run Code Online (Sandbox Code Playgroud)
其他方式当然是创建和填充a List<T>或an Array而不是传递它IEnumerable<T>.
[编辑]作为扩展方法,它可能被命名为:
public static class IEnumerableExt
{
// usage: someObject.SingleItemAsEnumerable();
public static IEnumerable<T> SingleItemAsEnumerable<T>(this T item)
{
yield return item;
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?
[Edit2]我们发现someObject.Yield()(正如@Peter在下面的评论中所建议的那样)是这个扩展方法的最佳名称,主要是为了简洁,所以如果有人想要抓住它的话,它会与XML注释一起:
public static class IEnumerableExt
{
/// <summary>
/// Wraps this object instance into an IEnumerable<T>
/// consisting of a …Run Code Online (Sandbox Code Playgroud) 我通常使用数组语法从单个值创建一个序列,如下所示:
IEnumerable<string> sequence = new string[] { "abc" };
Run Code Online (Sandbox Code Playgroud)
或使用新的列表.我想听听是否有人有更具表现力的方式来做同样的事情.
C#是否提供了一种很好的方法来将单个实体类型转换T为IEnumerable<T>?
我能想到的唯一方法是:
T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();
Run Code Online (Sandbox Code Playgroud)
我想应该有更好的方法.