VB.NET 循环收集并获取价值

VB.NET Loop Collection And Get Value

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

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

如何遍历 AttachmentCollection 并测试附件的每个名称?

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

我不完全熟悉所涉及的类型,我相信 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 几乎相同,除了它 returns 如果找到匹配项或 Nothing 如果没有找到匹配项而不是返回 True 如果找到匹配项,如果未找到匹配项,则 False