无法弄清楚如何检查列表是否包含0

时间:2015-11-25 10:11:52

标签: c# exchange-server

此代码检查交易对手列表是否包含电子邮件地址。 然后在else语句中,有可能电子邮件地址仍然为0.我需要一段代码,当它为零时填写电子邮件地址列表。

if (counterParty == null)
{
    mailAddressesOfCounterparty = new List<Email>();
    Email unKnownEmail = new Email();
    unKnownEmail.EmailAddress = loopPayment.ShortNameCalypso + "@NotInCounterpartyTable.nl";
    mailAddressesOfCounterparty.Add(unKnownEmail);
}
else
{
    mailAddressesOfCounterparty =
        emailAddress.Where(ea => ea.CounterPartyId == counterParty.Id && ea.IsOptionContract == startOfGroupPayment.OptionContract).ToList();                        
}

此代码需要制作电子邮件地址。只是不知道如何检查是否为零。

Email unKnownEmail = new Email();
unKnownEmail.EmailAddress = loopPayment.ShortNameCalypso + "@NotInCounterpartyTable.nl";
mailAddressesOfCounterparty.Add(unKnownEmail);

在其他我需要添加一个可能性,当它变为零时,将电子邮件地址更改为某些东西。 代码不会让我们使用if语句。

mailAddressesOfCounterparty变为零,因为尚未在数据库中添加内容。但是,在使用此应用程序时,这些信息可能会丢失。在这种情况下,我想创建一个电子邮件地址,表明无法找到它。

2 个答案:

答案 0 :(得分:5)

如果我正确理解了这个问题,您需要验证列表中是否有您在else子句中过滤的地址。

linq扩展方法&#34; Any()&#34;可用于确定枚举是否包含任何项目(还有其他方式),使用此示例(基于您的代码)是:

if (counterParty == null)
{
    mailAddressesOfCounterparty = new List<Email>();
    Email unKnownEmail = new Email();
    unKnownEmail.EmailAddress = loopPayment.ShortNameCalypso + "@NotInCounterpartyTable.nl";
    mailAddressesOfCounterparty.Add(unKnownEmail);
}
else
{
    mailAddressesOfCounterparty = emailAddress.Where(ea => ea.CounterPartyId == counterParty.Id && ea.IsOptionContract == startOfGroupPayment.OptionContract).ToList();

    if (!mailAddressesOfCounterparty.Any()) 
    {
        Email unKnownEmail = new Email();
        unKnownEmail.EmailAddress = loopPayment.ShortNameCalypso + "@NotInCounterpartyTable.nl";
        mailAddressesOfCounterparty.Add(unKnownEmail);
    }
}

答案 1 :(得分:2)

如果我正确理解了这个问题,可以在else分支中引入如下的初始化

mailAddressesOfCounterparty = mailAddressesOfCounterparty ?? new List<Email>();

如果是null,则会使用新列表对其进行初始化。但是,在mailAddressesOfCounterparty分支的第一个语句之后,我不知道else如何为空。