C# 是否可以使用Linq替换这个Foreach循环

C# 是否可以使用Linq替换这个Foreach循环,c#,linq,C#,Linq,是否可以用Linq命令替换foreach语句 string recipient = "recipients could not be defined"; if (mail.To != null && mail.To.Count > 0) { var addresses = mail.To.Select(r => r.Address); foreach (s

是否可以用Linq命令替换foreach语句

            string recipient = "recipients could not be defined"; 
            if (mail.To != null && mail.To.Count > 0) {
                var addresses = mail.To.Select(r => r.Address);
                foreach (string s in addresses) {
                    recipient += s + " ";
                }
            }

如果我有ReSharper,我肯定它会提出一个合适的建议,但我没有。这感觉应该有帮助,但我不确定在Concat中使用什么对象。

而不是使用Linq foreach(只有在
列表中可用,除非您自己编写),您可以向后执行,并避免在过程中使用字符串串联:

recipient = string.Join(" ", mail.To.Select(r => r.Address));

这将替换您的
var地址…
以后的地址。

而不是使用Linq foreach(除非您自己编写,否则它仅在
列表上可用),您可以向后执行,并避免在此过程中串接:

recipient = string.Join(" ", mail.To.Select(r => r.Address));

这将取代您的
var地址…
以后。

请告诉我。:)请注意,这(可能)还修复了原始代码中的一个bug,这将导致
收件人
有一个尾随空格,我想这不是真正需要的。真的!我记得在此之前我写的代码,要么在结尾进行修剪,要么手动修剪我在循环中使用的StringBuilder的最后一个字符如果使用此代码,请记住您将需要
mail.To!=null
条件,但不是
mail.To.Count>0
。这是票证。多谢各位@马修·沃森。我只是在收集信息,所以不太担心额外的尾随空间,但这样做也解决了这个问题,这是一个额外的好处。使用
。&&mail.To.Any()
而不是Count()击败我。:)请注意,这(可能)还修复了原始代码中的一个bug,这将导致
收件人
有一个尾随空格,我想这不是真正需要的。真的!我记得在此之前我写的代码,要么在结尾进行修剪,要么手动修剪我在循环中使用的StringBuilder的最后一个字符如果使用此代码,请记住您将需要
mail.To!=null
条件,但不是
mail.To.Count>0
。这是票证。多谢各位@马修·沃森。我只是在收集信息,所以不太担心额外的尾随空间,但这种方法也解决了这个问题,这是一个额外的好处。使用
。&&mail.To.Any()
而不是Count()