Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为C中的每个表达式向lambda添加一个条件_C#_Lambda - Fatal编程技术网

C# 为C中的每个表达式向lambda添加一个条件

C# 为C中的每个表达式向lambda添加一个条件,c#,lambda,C#,Lambda,基本上我想这样做 foreach (var TA in TheToAddresses) { if(TA.ToLower () != "a@a.com") { _message.ToRecipients.Add(TA); } } 如何修改 这一行是否也包括条件? 谢谢 如果ToRecipients的类型为List,则可以编写: _message.ToRecipients.AddRange(TheToAddresses.Where(TA => TA.T

基本上我想这样做

foreach (var TA in TheToAddresses)
{
    if(TA.ToLower () != "a@a.com")
    {
        _message.ToRecipients.Add(TA);
    }
}
如何修改 这一行是否也包括条件? 谢谢

如果ToRecipients的类型为List,则可以编写:

_message.ToRecipients.AddRange(TheToAddresses.Where(TA => TA.ToLower() != "a@a.com"));
如果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);
        }
     });

可以通过使用{}包装多行lambda方法来编写该方法:

TheToAddresses.ForEach(TA =>
    {
        if(TA.ToLower () != "a@a.com")
        {
             _message.ToRecipients.Add(TA);
        }
     });

你写的几乎是对的。LINQ不应该有副作用。看


唯一的一点是,如果你想进行不区分大小写的比较,你不知道,从字符串开始,你写的几乎是正确的。LINQ不应该有副作用。看


唯一的一点是,如果你想进行不区分大小写的比较,你不知道,从字符串开始,它真正开始变得毛茸茸的

什么是_message.ToRecipients类型?如果没有ForEach,可能会有更好的解决方案。什么类型的_message.ToRecipients?如果没有ForEach,可能会有更好的解决方案。默认情况下,IEnumerable在LINQ命名空间中不包含ForEach扩展方法。只有List有这样一个方法。没错,但是加载项是一个List,因为Ienumerable没有Add方法,这是IList InterfaceEyes的一个方法,但返回Ienumerable而不是List。@它可以工作。这是一个有效的解决方案。但是,它消耗更多的时间和内存来创建新的列表和分配它所需的内存。在默认情况下,当InEdabess中的行计数不包含LINQ命名空间中的FACH扩展方法时,我不考虑多行lambda。只有List有这样一个方法。没错,但是加载项是一个List,因为Ienumerable没有Add方法,这是IList InterfaceEyes的一个方法,但返回Ienumerable而不是List。@它可以工作。这是一个有效的解决方案。但是,它消耗更多的时间和内存,用于创建新的列表和分配它所需的内存。我不考虑多行lambda,当行数与在其他ANWSER中相同的问题相同时,在那里返回I枚举。Linq namesapce中没有名为ForEach的扩展方法。这与其他anwser中的问题相同,其中返回IEnumerable。Linq名称空间中没有名为ForEach的扩展方法。
TheToAddresses.Where(address => address.ToLower() != "a@a.com").ToList().ForEach(TA => _message.ToRecipients.Add(TA));
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));
foreach (var TA in TheToAddresses)
{
    if(!StringComparer.OrdinalIgnoreCase.Equals(TA, "a@a.com"))
    {
        _message.ToRecipients.Add(TA);
    }
}