基本上我想这样做
foreach (var TA in TheToAddresses)
{
if(TA.ToLower () != "a@a.com")
{
_message.ToRecipients.Add(TA);
}
}
我该如何修改 这条线还包括条件? 感谢
TheToAddresses.ForEach(TA => _message.ToRecipients.Add(TA));
答案 0 :(得分:3)
TheToAddresses.ForEach(TA =>
{
if(TA.ToLower () != "a@a.com")
_message.ToRecipients.Add(TA)
});
如果ToRecipients
类型为List
,您可以写:
_message.ToRecipients.AddRange(TheToAddresses.Where(TA => TA.ToLower() != "a@a.com"));
答案 1 :(得分:2)
您可以使用{}包装它来编写多行lambda方法:
TheToAddresses.ForEach(TA =>
{
if(TA.ToLower () != "a@a.com")
{
_message.ToRecipients.Add(TA);
}
});
答案 2 :(得分:1)
TheToAddresses.Where(r=> r.ToLower () != "a@a.com").ToList()
.ForEach(TA => _message.ToRecipients.Add(TA));
答案 3 :(得分:1)
TheToAddresses.Where(address => address.ToLower() != "a@a.com").ToList().ForEach(TA => _message.ToRecipients.Add(TA));
答案 4 :(得分:0)
TheToAddresses.Where(ta => ta.ToLower() != "a@a.com")
.ForEach(TA => _message.ToRecipients.Add(TA));
答案 5 :(得分:0)
你所写的几乎是正确的方式。 LINQ不应该有副作用。见http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx
foreach (var TA in TheToAddresses)
{
if(!StringComparer.OrdinalIgnoreCase.Equals(TA, "a@a.com"))
{
_message.ToRecipients.Add(TA);
}
}
唯一的一点是,如果您想进行不区分大小写的比较,则不要ToLower()
/ ToUpper()
(请参阅http://blog.codinghorror.com/whats-wrong-with-turkey/,从字符串开始就是它真正开始的地方变得毛茸茸的)