繁体   English   中英

如何将 foreach 循环转换为 linq 语句?

[英]How can i convert foreach loop to linq statements?

那是我的代码。

foreach (var item in dtos)
{
      if (item.sample1 != SelectedDto.sample2)
      {
            adi.AppendLine(item.sample3.ToString() + " , " + item.sample1 + " , " + item.sample4);
      }

}

这就是我尝试的代码。

 if (dtos.Any(x => x.sample1 != SelectedDto.sample2)) ?????

嗯,你可以使用linq来提取你需要添加到StringBuilder中的信息,然后以这种方式添加它们

var selections = dtos.Where(x => x.sample1 != SelectedDto.sample2)
                     .Select(k => $"{k.sample3} , {k.sample1} , {k.sample4}");
adi.Append(string.Join(Environment.NewLine, selections));

这里我们使用 Where 枚举来提取所有匹配条件的 dto,并使用获得的序列从提取的项目中构建一组字符串。

此时,我们可以将所有内容添加到 StringBuilder 中,用一行将提取的字符串连接在一起。

正如您所看到的,这是更短的代码,但与之前的代码相比,它真的有必要和改进吗? 我没有用足够的数据对其进行测试以有很强的信心,但我感觉从性能的角度来看,linq 版本比正常的 for...loop 弱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM