[英]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"));
您可以使用{}包裝多行lambda方法:
TheToAddresses.ForEach(TA =>
{
if(TA.ToLower () != "a@a.com")
{
_message.ToRecipients.Add(TA);
}
});
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));
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/ ,從字符串開始的地方它真的開始變得毛茸茸的 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.