加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 循环列表的更好方法

发布时间:2020-12-16 00:22:16 所属栏目:百科 来源:网络整理
导读:所以我有几个不同的列表,我正在尝试处理并合并到1个列表中. 下面是一段代码,我想看看是否有更好的方法. 我之所以要问的是,其中一些列表相当大.我想看看是否有更有效的方法来做到这一点. 正如您所看到的,我正在遍历列表,我要做的第一件事就是检查列表中是否存
所以我有几个不同的列表,我正在尝试处理并合并到1个列表中.

下面是一段代码,我想看看是否有更好的方法.
我之所以要问的是,其中一些列表相当大.我想看看是否有更有效的方法来做到这一点.

正如您所看到的,我正在遍历列表,我要做的第一件事就是检查列表中是否存在CompanyId.如果是,那么我在列表中找到我要处理的项目.

pList是我的processign列表.我将不同列表中的值添加到此列表中.

我想知道是否有一种“更好的方式”来完成存在和发现.

boolean tstFind = false;
    foreach (parseAC item in pACList)
    {
        tstFind = pList.Exists(x => (x.CompanyId == item.key.ToString()));

        if (tstFind == true)
        {
            pItem = pList.Find(x => (x.CompanyId == item.key.ToString()));
            //Processing done here.  pItem gets updated here
            ...
         }

正如旁注,我将研究一种使用连接的方法,看看它是否更快.但我还没到那儿.上面的代码是我第一次解决这个问题,它似乎工作.但是,因为我有时间想看看是否还有更好的方法.

任何输入都非常感谢.

时间调查结果:

>我当前的查找和存在代码大约需要84分钟来遍历pACList中的5.5M项目.
>使用pList.firstOrDefault(x => x.CompanyId == item.key.ToString());花费54分钟来循环访问pACList中的5.5M项目

解决方法

您可以使用FirstOrDefault检索项目,而不是两次搜索项目(第一次定义是否存在项目,第二次获取现有项目):

var tstFind = pList.FirstOrDefault(x => x.CompanyId == item.key.ToString());

if (tstFind != null)
{            
   //Processing done here.  pItem gets updated here        
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读