以下代码中的Foreach循环花费了更多时间用于50,00,000条记录。
相反,我需要更改并将其分配给一个简单的List或Ienumerable集合以查找Distinct集合。
我的问题是如何将下面的ForEach循环转换为List<Records>
或任何其他集合(不使用循环)。我添加了我的编码结构。请帮我解决。 //请参阅CODE中的评论。
Class MainFilter
{
Private Void GetRecords()
{
List<object> choices = new List<Object>();
// Instead of the below line can I get the FilterItems implicitly converted.
// I need a collection without ForeachLoop...something like the below.
// List<Record> recordsCollection = table.FilterItems; Please help.
// Foreach loop is taking more time I need this to be converted to
// simple collection using IList or Enumerable
foreach (Record rec in table.FilterItems)
{
Choices.Add(rec.GetValue());
}
}
}
Public Class SecondTable: IContainerElement, IDisposable
{
public ThirdFilterItems FilterItems
{
get
{
_filteredRecords = new ThirdFilterItems(this);
}
}
}
public class ThirdFilterItems: FourthFilterItems
{
internal ThirdFilterItems(SecondTable table) : base(table)
{
}
}
public class FourthFilterItems: IList, IDisposable
{
public Record this[int index]
{
get
{
return record;
}
}
}
答案 0 :(得分:0)
以下内容将为您提供一系列的选择&#34;没有迭代集合。
table.FilterItems.Select(x => x.GetValue())
这就是你要找的东西吗?它不是一个清单。如果您需要将其转换为列表,则必须迭代集合才能执行此操作。
答案 1 :(得分:0)
你可以使用Linq:
来做到这一点List<Record> recordsCollection = table.FilterItems
.Select(r => r.GetValue())
.ToList();
但是不要期望它更快......在内部,它仍然与原始代码完全相同。如果没有循环,或者循环的道德等价物,就没有办法解决这个问题。