Yip*_*Yay 17 c# generics ienumerable
C#是否提供了一种很好的方法来将单个实体类型转换T为IEnumerable<T>?
我能想到的唯一方法是:
T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();
Run Code Online (Sandbox Code Playgroud)
我想应该有更好的方法.
Ada*_*son 23
你的电话AsEnumerable()是不必要的.AsEnumerable通常用于目标对象实现IQueryable<T>但你想强制它使用LINQ-to-Objects的情况(例如,在LINQ兼容的ORM上进行客户端过滤时).既然List<T>实现,IEnumerable<T>但没有IQueryable<T>,没有必要.
无论如何,您还可以使用您的项目创建单元素数组;
IEnumerable<T> enumerable = new[] { t };
Run Code Online (Sandbox Code Playgroud)
要么 Enumerable.Repeat
IEnumerable<T> enumerable = Enumerable.Repeat(t, 1);
Run Code Online (Sandbox Code Playgroud)
var entity = new T();
var singleton = Enumerable.Repeat(entity, 1);
Run Code Online (Sandbox Code Playgroud)
(尽管在大多数情况下我可能都会这么做var singleton = new[] { entity };,特别是如果它仅供私人使用的话。)