通过循环检查我的所有列表与列表有什么区别.其中(..)
本文关键字:列表 区别 什么 其中 检查 我的 循环 | 更新日期: 2023-09-27 18:32:17
例如:
public void do1(string str)
{
List<string> list = new List<string>();
foreach (string item in list)
{
if (item == str)
{
///
}
}
}
比较:
public void do2(string str)
{
List<string> list = new List<string>();
var item = list.Where(x => x == str);
///
}
实施馆藏搜索的最有效方法是什么?
定义"最有效"?
使用 Linq ( list.Where()
) 可以让你的代码更简洁,可以说更易于维护,它还让你在使用高级操作时更容易看到程序背后的人为逻辑。
使用 foreach
确实具有微不足道的性能加成,如果您执行的操作比 Linq 描述的更复杂的操作(例如实现状态机),则确实为您提供了更大的灵活性。
如果您想进行简单的单词搜索,那么使用 .Where
是可以接受的,我认为没有理由使用 foreach
.
真的没有其他方法比简单的foreach
循环更快。如果列表没有特殊属性,则无法获得比线性搜索列表更好的性能。
Linq 的.Where
和.Single
(及其表亲)的好处仅仅是因为阅读编写良好的.Single
搜索比编写具有许多 if 语句的 foreach 方法更简洁、更令人满意。
想象一下拥有
Model object = null;
foreach (var model in modelsList) {
if (model != null && model.Property != null && model.Property.Property == "wanted") {
object = model;
}
}
对
Model object = modelsList.Single(model =>
model != null &&
model.Property != null &&
model.Property.Property == "wanted"
);
你看到这个想法更好一点。
实际上,性能差异可以忽略不计,但可以肯定地说,foreach
在最坏的情况下会稍微快一些。