如何创建单例IEnumerable?
C#是否提供了一种很好的方法来将类型T
的单个实体IEnumerable
为IEnumerable
?
我能想到的唯一方法是:
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 };
在大多数情况下,特别是如果它仅供私人使用。)