当 LINQ IEnumerable 的返回为空时,如何不添加到列表中?

问题描述

我确实有以下 VB.NET 代码

    Dim list = directoryQuery.Select(
            Function(d) New With {
                .dir = d.FullName,.acl = GetFileSystemAccessRule(d).Select(
                                Function(a) New With {.if = a.Reference.ToString()}
                )
            }
    )
End Sub

有时 GetFileSystemAccessRule(d).Select 的返回值是 Return Enumerable.Empty(Of FileSystemAccessRule)()在这种情况下,我既不想在该 .directory添加 .acl,也不想添加 list。我想跳过它。

所以我考虑了之后删除空项目的选项。

//tried but Failed:
list = list.Where(Function(a) a.acl IsNot Enumerable.Empty(list)).ToList()
//tried but Failed:
list = list.Where(Function(a) a.acl IsNot nothing).ToList()

但不幸的是,他们都失败了。我做错了什么?

解决方法

我认为这是要走的路:

list = list.Where(Function(a) a.acl.Any())

或类似的东西(我不太精通 VB.NET 语法)。