VB.NET循环集合和获取值

VB.NET循环集合和获取值,vb.net,exchangewebservices,Vb.net,Exchangewebservices,我使用EWS循环浏览一些附件,但是如果我遇到一封包含多个附件的电子邮件,我只想下载一个特定的附件 为此,我想我可以测试AttachmentCollection是否包含特定的附件名称,然后只下载该附件 如何循环AttachmentCollection并测试附件的每个名称 我无法执行AttachmentCollection。包含,因为它包含附件的集合,而不是附件本身的名称。我不完全熟悉所涉及的类型,我相信AttachmentCollection实现了IEnumerable(of t),这意味着您可以

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

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

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


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

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

Dim attachment=myAttachmentCollection.FirstOrDefault(函数(a)a.Name=someValue)
如果附件不是什么,那么
'找到了匹配项,附件引用了它。
如果结束
不确定项目类型,因此您可能没有
名称
属性,但原则相同

编辑:

对于记录,
Contains
的等价物将是
Any

如果myAttachmentCollection.Any(函数(a)a.Name=someValue),则

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

可以使用
.Count
属性并在其中的项类似于数组,例如,
myCollection[i]
。它还有一个迭代器,因此您还应该能够执行
foreach
循环。