C#是否提供了一种很好的方法来将T
类型的单个实体强制转换为IEnumerable<T>
?
我能想到的唯一方法是:
T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();
我想应该有更好的方法。
答案 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 };
,特别是如果它仅供私人使用。)