List<MyClass> options = new List<MyClass>();
foreach (MyClass entity in ExistingList) {
if (entity.IsCoolEnough) {
options.Add(entity);
}
}
我只是好奇最快,最有效的方法是什么。这个列表并不是很大,但它经常运行,所以我想让它保持活泼。我也不是在寻找冗长的变化。我只想尽可能快地运行。
答案 0 :(得分:7)
好吧,使用LINQ,它更直观地读取:
var options = (from e in ExistingList where e.IsCoolEnough select e).ToList();
我不确定它是否更快或更有效率。
我说对于小型列表,这实际上是某种过度优化,对于短列表,foreach
,for
并且上述方法不应该完全不同。因此,不要优化它,首先检查它是否会产生运行时问题。
答案 1 :(得分:0)
我看到两种可能的“一般”优化案例,无论是在数据库级还是模型级,取决于资源占用的位置。
如果您可以通过db-level中的IsCoolEnough
上的位置进行选择:
var result = ExistingList.Where(e => e.IsCoolEnough) // still in db?
.ToList(); // enumerate
如果你不能而且昂贵的操作是IsCoolEnough
:
var result = new ConcurrentBag<MyClass>(); // Thread safe but unordered.
Parallel.ForEach(ExistingList, current =>
{
if (current.IsCoolEnough) result.Add(current);
});
鉴于非常未知的要求,我不可能提供更可靠的建议。但是在实现中没有任何一般的“错误”。