如何创建单例IEnumerable?

C#是否提供了一种很好的方法来将类型T的单个实体IEnumerableIEnumerable

我能想到的唯一方法是:

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

我想应该有更好的方法。

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

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

 IEnumerable enumerable = new[] { t }; 

或者Enumerable.Repeat

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

我用

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

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