0

2 つの ForEach ループがあり、それらを 1 つの Linq に変換しようとしています。

Dim result As Type = Nothing

For Each AssemblyItem As Reflection.Assembly In AppDomain.CurrentDomain.GetAssemblies
    For Each typeItem As Type In AssemblyItem.GetTypes
        If myClass.FullName = typeItem.FullName Then
            result = typeItem
            Exit For
        End If
    Next

    If Not IsNothing(result) Then
        Exit For
    End If
Next

現時点で私は持っています:

result = AppDomain.CurrentDomain.GetAssemblies()
        .ForEach(Sub(x As Reflection.Assembly) 
                     x.GetTypes().ForEach(Sub(t As Type) 
                                              t.FullName = catalogEntity))

私は運がない別のアプローチでも試しました:

result = AppDomain.CurrentDomain.GetAssemblies()
        .Select(Sub(x) x.GetTypes()
        .Select(Function(y) y.GetType())
        .Where(Function(z) z.FullName.Equals(catalogEntity.FullName))).FirstOrDefault()

しかし、次のエラーが発生します。

「Public Shared Sub ForEach(Of T)(array() As T, action As System.Action(Of T))」のパラメーター「action」に引数が指定されていません

事前に感謝します。

4

1 に答える 1

2

ここにVBがあります:

Dim result as Type = AppDomain.CurrentDomain.GetAssemblies().SelectMany(Function(x) x.GetTypes()).FirstOrDefault(Function(x) x.FullName Is myClass.FullName)

そして C# (私のネイティブ .NET 言語) では:

Type result = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()).FirstOrDefault(x => x.FullName == myClass.FullName);
于 2013-04-27T01:56:27.360 に答える