0

このコードを 1 つの linq ステートメントで実行するにはどうすればよいですか?

つまり、すべての linq ステートメントの結果を 1 つの大きな列挙に追加します。

List<Type> alltypes = new List<Type>();
var assemblies = AppDomain.CurrentDomain.GetAssemblies();

foreach (var assembly in assemblies) 
{
    foreach (var type in assembly.GetTypes()) 
    {
    alltypes.Add(type);
    }
}
4

1 に答える 1

3

あなたが望むように聞こえます:

var allTypes = AppDomain.CurrentDomain.GetAssemblies()
                        .SelectMany(assembly => assembly.GetTypes())
                        .ToList();

SelectMany1 つの「入力」アイテム (この場合はアセンブリ) が他の複数のアイテム (この場合は型) のソースとして使用される場合に使用します。

クエリ式でそれが必要な場合:

var allTypes = (from assembly in AppDomain.CurrentDomain.GetAssemblies()
                from type in assembly.GetTypes()
                select type).ToList();
于 2013-09-21T20:14:04.437 に答える