[英]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.