C#-如何正确使用所有扩展方法
我对此代码有问题:C#-如何正确使用所有扩展方法,c#,linq,C#,Linq,我对此代码有问题: foreach (var newRecipient in productTaskEntity.ProductTaskRecipient) { if (existingRecipients.All(i => i.EmailAddress != newRecipient.EmailAddress && i.RecipientTypeId != newRecipient.RecipientTypeId)); {
foreach (var newRecipient in productTaskEntity.ProductTaskRecipient)
{
if (existingRecipients.All(i => i.EmailAddress != newRecipient.EmailAddress &&
i.RecipientTypeId != newRecipient.RecipientTypeId));
{
existingProductTask.ProductTaskRecipient.Add(newRecipient);
}
}
我正在尝试遍历现有的收件人集合,查看具有相同电子邮件地址和收件人类型的记录上是否有匹配项,如果没有,则添加新的收件人。不知何故,条件总是求值为true,并且接收者被不必要地添加。我想我误解了“All”的工作原理。问题在于分号
代码>在if之后。它终止if,并且始终执行下一条语句,因为它不再是if的一部分
if (existingRecipients.All(i => i.EmailAddress != newRecipient.EmailAddress &&
i.RecipientTypeId != newRecipient.RecipientTypeId)); // <=== REMOVE THIS ";" !
{
existingProductTask.ProductTaskRecipient.Add(newRecipient);
}
这意味着if始终只与一条语句关联。例如在
if (condition) statement1; statement2;
只有语句1
属于if语句。如果需要执行一系列语句,请使用复合语句:
{ statement1; statement2; ... }
像这样
if (condition) { statement1; statement2; ... }
还要注意,在C#中有一个所谓的空语句。在
statement1; ; statement2;
statement1
和statement2
之间有一条空语句。空语句什么也不做,只是一个语法工件。如果你写信
if (condition);
然后if语句后面跟着一个空语句。伙计,这太尴尬了。谢谢,需要另一双眼睛代码>隐藏和寻找冠军自1958年以来在修复分号问题后。。。从语义上讲,您想要的是!现有收件人。任何(…)
测试为=
的收件人。这两种方法都可以,但读起来更好,就像“如果没有任何匹配项,请添加它”。。。C#给出了一个警告,如果你这样做,可能会出现错误的空语句。团队策略:消除所有警告(即不加抑制)。问题的标题与问题本身无关。
if (condition);