C# 我如何转换这个?
在数据库中建立索引的最佳方法是什么C# 我如何转换这个?,c#,ienumerable,C#,Ienumerable,在数据库中建立索引的最佳方法是什么 IEnumerable<T> 或 (在循环中) 这里推荐的转换路径是什么?获取所需内容的最快和最脏的方法是使用该类。这可以作为IList实现公开(因此您可以根据需要通过索引进行随机访问),但实际上是只读的(因此通常会更改集合的方法,例如,Add,Insert,等等,会抛出异常) 您也可以设计自己的接口,该接口继承自IEnumerable,并且只公开此[int index]getter 但是,您需要为此编写一个包装器,以使其完全有用。不幸的事实是,
IEnumerable<T>
或
(在循环中)
这里推荐的转换路径是什么?获取所需内容的最快和最脏的方法是使用该类。这可以作为
IList
实现公开(因此您可以根据需要通过索引进行随机访问),但实际上是只读的(因此通常会更改集合的方法,例如,Add
,Insert
,等等,会抛出异常)
您也可以设计自己的接口,该接口继承自IEnumerable
,并且只公开此[int index]
getter
但是,您需要为此编写一个包装器,以使其完全有用。不幸的事实是,很多代码与IList接口交互只是为了随机访问(不是可变的),因此使用它可能是阻力最小的途径。如果您想要一个带有索引器的集合,但需要只读的东西,那么就使用。使用表达式或foreach循环。索引可能会导致很多错误和草率的代码 否则,对IEnumerable执行ToArray,然后进行索引 IEnumerable就是支持枚举的对象。它不一定支持索引,因此不能索引到对象中 例如,使用IEnumerable:
//item.Dates[0];
item.Dates.FirstOrDefault();
//item.Dates[i] in a loop
item.Dates.Select(/*some projection*/);
//or
foreach (var date in item.Dates)
{
//some action with side effects
}
IEnumerable<T>
item.Dates[0]
item.Dates[i]
//item.Dates[0];
item.Dates.FirstOrDefault();
//item.Dates[i] in a loop
item.Dates.Select(/*some projection*/);
//or
foreach (var date in item.Dates)
{
//some action with side effects
}