为 C# 中的每个表达式向 lambda 添加条件
add a condition to the lambda for each expression in C#
基本上我想这样做
foreach (var TA in TheToAddresses)
{
if(TA.ToLower () != "a@a.com")
{
_message.ToRecipients.Add(TA);
}
}
我该如何修改
这一行也包括条件?
谢谢
TheToAddresses.ForEach(TA => _message.ToRecipients.Add(TA));
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"));
TheToAddresses.Where(r=> r.ToLower () != "a@a.com").ToList()
.ForEach(TA => _message.ToRecipients.Add(TA));
TheToAddresses.Where(address => address.ToLower() != "a@a.com").ToList().ForEach(TA => _message.ToRecipients.Add(TA));
您可以通过用 { } 包装它来编写多行 lambda 方法:
TheToAddresses.ForEach(TA =>
{
if(TA.ToLower () != "a@a.com")
{
_message.ToRecipients.Add(TA);
}
});
TheToAddresses.Where(ta => ta.ToLower() != "a@a.com")
.ForEach(TA => _message.ToRecipients.Add(TA));
你写的几乎是正确的方法。 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/,以 开头的字符串是真正开始变得毛茸茸的地方)
基本上我想这样做
foreach (var TA in TheToAddresses)
{
if(TA.ToLower () != "a@a.com")
{
_message.ToRecipients.Add(TA);
}
}
我该如何修改 这一行也包括条件? 谢谢
TheToAddresses.ForEach(TA => _message.ToRecipients.Add(TA));
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"));
TheToAddresses.Where(r=> r.ToLower () != "a@a.com").ToList()
.ForEach(TA => _message.ToRecipients.Add(TA));
TheToAddresses.Where(address => address.ToLower() != "a@a.com").ToList().ForEach(TA => _message.ToRecipients.Add(TA));
您可以通过用 { } 包装它来编写多行 lambda 方法:
TheToAddresses.ForEach(TA =>
{
if(TA.ToLower () != "a@a.com")
{
_message.ToRecipients.Add(TA);
}
});
TheToAddresses.Where(ta => ta.ToLower() != "a@a.com")
.ForEach(TA => _message.ToRecipients.Add(TA));
你写的几乎是正确的方法。 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/,以 开头的字符串是真正开始变得毛茸茸的地方)