C#是否提供了将类型为T
的单个实体转换为IEnumerable<T>
的好方法?
我能想到的唯一方法是:
T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();
我猜应该有更好的方法。
C#是否提供了将类型为T
的单个实体转换为IEnumerable<T>
的好方法?
我能想到的唯一方法是:
T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();
我猜应该有更好的方法。
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);
Repeat
方法,那么隐式数组语法(new[] { t }
)也可以实现同样的效果。 - Adam Robinson我使用
Enumerable.Repeat(entity, 1);
var entity = new T();
var singleton = Enumerable.Repeat(entity, 1);
虽然在大多数情况下我会直接使用 var singleton = new[] { entity };
,特别是如果只是用于私人使用。
{ entity }
。 - R. Martinho FernandesT[] x = { y }
或者var x = new[] { y }
,但是不能使用var x = { y }
。 - LukeH