如何创建单例 IEnumerable?

问题描述 投票:0回答:4

C# 是否提供了一些不错的方法来将

T
类型的单个实体转换为
IEnumerable<T>

我能想到的唯一方法是:

T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();

我想应该有更好的方法。

c# generics ienumerable
4个回答
25
投票

您无需致电

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);

6
投票

我用

Enumerable.Repeat(entity, 1);

6
投票
var entity = new T();
var singleton = Enumerable.Repeat(entity, 1);

(尽管在大多数情况下我可能只是这样做

var singleton = new[] { entity };
,特别是如果它仅供私人使用。)


0
投票

使用 C# 12 中引入的新集合表达式

var singleton = [entity];
© www.soinside.com 2019 - 2024. All rights reserved.