通过循环检查我的所有列表与列表有什么区别.其中(..)

本文关键字:列表 区别 什么 其中 检查 我的 循环 | 更新日期: 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在最坏的情况下会稍微快一些。