C# 是否提供了一些不错的方法来将
T
类型的单个实体转换为 IEnumerable<T>
?
我能想到的唯一方法是:
T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();
我想应该有更好的方法。
您无需致电
AsEnumerable()
。 AsEnumerable
通常用于目标对象实现 IQueryable<T>
但您希望强制它使用 LINQ 到对象的情况(例如,在 LINQ 兼容的 ORM 上进行客户端过滤时)。由于 List<T>
实现了 IEnumerable<T>
但没有实现 IQueryable<T>
,因此不需要它。
无论如何,您也可以使用您的项目创建一个单元素数组;
IEnumerable<T> enumerable = new[] { t };
或者
Enumerable.Repeat
IEnumerable<T> enumerable = Enumerable.Repeat(t, 1);
我用
Enumerable.Repeat(entity, 1);
var entity = new T();
var singleton = Enumerable.Repeat(entity, 1);
(尽管在大多数情况下我可能只是这样做
var singleton = new[] { entity };
,特别是如果它仅供私人使用。)
使用 C# 12 中引入的新集合表达式:
var singleton = [entity];