是否可以跳过一行

时间:2018-12-13 06:52:58

标签: c# outlook

在这里,我试图获取用户的Outlook属性。

如果一个用户拥有某些财产并正在检索该财产。

如果另一个用户没有属性,则此代码终止。

result.Properties["postalcode"][0];

某些用户的索引结果超出范围,因为此属性不可用。 但是

result.Properties["displayName"][0];

该属性可用于该用户。

    excelSheet.Cells[i, 9].Value = result.Properties["postalcode"][0];
excelSheet.Cells[i, 10].Value =result.Properties["displayName"][0];

对于没有Outlook属性的邮政编码的人来说,可以读取显示名称并跳过邮政编码的属性。

2 个答案:

答案 0 :(得分:2)

可以使用是否存在检查值的条件。

if (result.Properties["postalcode"] != null && result.Properties["postalcode"].Count() > 0)
{
    excelSheet.Cells[i, 9].Value = result.Properties["postalcode"][0];
} 

答案 1 :(得分:0)

您可以使用空条件:

excelSheet.Cells[i, 9].Value = result.Properties["postalcode"]?[0];

技巧是["postalcode"]之后的问号。它是一种语法糖,可以代替

if(result.Properties["postalcode"]!=null)
    excelSheet.Cells[i, 9].Value = result.Properties["postalcode"][0];
else
    excelSheet.Cells[i, 9].Value = null;

更新:如果您需要返回某些值而不是null,则需要使用null运算符。例如。如果您需要插入“”而不是null,则它看起来像

excelSheet.Cells[i, 9].Value = result.Properties["postalcode"]?[0]??"";

替换

if(result.Properties["postalcode"]!=null)
    excelSheet.Cells[i, 9].Value = result.Properties["postalcode"][0];
else
    excelSheet.Cells[i, 9].Value = "";

还有另一种情况:如果excelSheet.Cells[i, 9].Value中有某个值,则要保留它并使用单线。比你可以做的魔术

excelSheet.Cells[i, 9].Value = result.Properties["postalcode"]?[0]??excelSheet.Cells[i, 9].Value;