如何创建单例IEnumerable?

时间:2011-02-10 16:51:07

标签: c# generics ienumerable

C#是否提供了一种很好的方法来将T类型的单个实体强制转换为IEnumerable<T>

我能想到的唯一方法是:

T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();

我想应该有更好的方法。

3 个答案:

答案 0 :(得分:22)

您无需致电AsEnumerable()AsEnumerable通常用于目标对象实现IQueryable<T>但你想强制它使用LINQ-to-Objects的情况(例如,在LINQ兼容的ORM上进行客户端过滤时) 。由于List<T>实现了IEnumerable<T>而不是IQueryable<T>,因此不需要它。

无论如何,您还可以使用项目创建单元素数组;

IEnumerable<T> enumerable = new[] { t };

Enumerable.Repeat

IEnumerable<T> enumerable = Enumerable.Repeat(t, 1);

答案 1 :(得分:5)

我用

Enumerable.Repeat(entity, 1);

答案 2 :(得分:4)

var entity = new T();
var singleton = Enumerable.Repeat(entity, 1);

(虽然在大多数情况下我可能只会做var singleton = new[] { entity };,特别是如果它仅供私人使用。)