【问题标题】:VB.NET Loop Collection And Get ValueVB.NET循环收集并获取价值
【发布时间】:2021-08-14 16:16:21
【问题描述】:

我正在使用 EWS 循环浏览一些附件,但是如果我遇到一封包含多个附件的电子邮件,我只想下载一个特定的附件。

为此,我想我可以测试一下 AttachmentCollection 是否包含特定的附件名称,然后只下载该附件。

如何循环访问 AttachmentCollection 并测试附件的每个名称?

我不能执行 AttachmentCollection.Contains,因为它包含附件集合而不是附件本身的名称。

【问题讨论】:

  • 您可以使用.Count 属性并像数组一样循环其中的项目,例如myCollection[i] See the docs。它还有一个迭代器,所以你应该也可以做一个foreach 循环。

标签: vb.net exchangewebservices


【解决方案1】:

我并不完全熟悉所涉及的类型,我相信AttachmentCollection 实现了IEnumerable(Of T),这意味着您可以在其上使用一些 LINQ。您可以使用以下方式测试并获取附件:

Dim attachment = myAttachmentCollection.FirstOrDefault(Function(a) a.Name = someValue)

If attachment IsNot Nothing Then
    'A match was found and attachment refers to it.
End If

不确定项目类型是什么,所以您可能没有Name 属性,但原理是一样的。

编辑:

为了记录,Contains 的等价物将是 Any

If myAttachmentCollection.Any(Function(a) a.Name = someValue) Then

如果您只想知道是否存在匹配项,那很好,但如果您也想获得匹配项,则不会首先使用Any,因为这样您将枚举两次。 FirstOrDefaultAny 几乎相同,除了如果找到匹配项,则返回匹配项;如果未找到匹配项,则返回 Nothing,而不是在找到匹配项时返回 True,如果未找到匹配项,则返回 False找到了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2017-01-15
    • 2015-08-07
    • 1970-01-01
    相关资源
    最近更新 更多