📜  使用 LINQ 打印非泛型集合列表的 C# 程序

📅  最后修改于: 2022-05-13 01:55:49.828000             🧑  作者: Mango

使用 LINQ 打印非泛型集合列表的 C# 程序

非通用集合在 System.Collections 命名空间中定义。它是一种适用于对象引用的通用数据结构,因此它可以处理任何类型的对象,但不是以安全类型的方式。非泛型集合由一组接口和类定义。我们可以通过使用 AppDomain 和 CurrentDomain 来获得所有实现接口的类型。这两个域将获得集合列表。除此之外,我们将使用 IEnumerable。 IEnumerable 是 C# 中的一个接口,用于定义一个只允许只读访问集合的方法,然后实现此接口的集合可以与 for-each 语句一起使用。此接口包含 System.Collections.Generic 命名空间。 IEnumerable 接口是一个通用接口,允许循环遍历通用或非通用列表。

语法

返回:此方法返回一个遍历集合的枚举器。

例子:

C#
// C# program to illustrate how to display the 
// list of non-generic collections using LINQ
using System;
using System.IO;
using System.Linq;
using System.Collections;
  
class GFG{
      
public static void Main(string[] args)
{
      
    // Get the type of IEnumerable
    var result = typeof(IEnumerable);
      
    // Get the domain
    var nonGenCollection = AppDomain.CurrentDomain.GetAssemblies().SelectMany(
                           x => x.GetTypes()).Where(x => result.IsAssignableFrom(x));
      
    // Display all the types using for loop
    foreach (var detail in nonGenCollection)
    {
        Console.WriteLine("---> " + detail.FullName);
    }
}
}


说明:在本例中,我们定义了一个“nonGenCollection”变量,它将通过使用“AppDomain.CurrentDomain.GetAssemblies()”方法获取所有 IEnumTypes。此方法将获取所有非泛型集合列表。然后我们迭代了一个for each循环来显示集合的全名

输出:

---> Mono.Security.X509.X509CertificateCollection
---> Mono.Security.X509.X509ExtensionCollection
---> System.ArraySegment`1
---> System.String
---> System.Array
---> System.Resources.IResourceReader
---> System.Resources.ResourceFallbackManager
---> System.Resources.ResourceReader
---> System.Resources.ResourceSet
---> System.Resources.RuntimeResourceSet
---> System.Reflection.TypeInfo+d__9
---> System.Reflection.TypeInfo+d__23
---> System.Reflection.Assembly+d__150
---> System.Threading.ThreadPool+d__21
---> System.Threading.Tasks.IProducerConsumerQueue`1
---> System.Threading.Tasks.MultiProducerMultiConsumerQueue`1
---> System.Threading.Tasks.SingleProducerSingleConsumerQueue`1
---> System.Threading.Tasks.ThreadPoolTaskScheduler+d__7
---> System.IO.Iterator`1
---> System.IO.FileSystemEnumerableIterator`1
---> System.IO.DirectoryInfo+d__39
---> System.IO.DirectoryInfo+d__43
---> System.IO.DirectoryInfo+d__47
---> System.IO.File+d__58
---> System.Runtime.Serialization.SurrogateHashtable
---> System.Runtime.Remoting.Channels.AggregateDictionary
---> System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties
---> System.Runtime.Remoting.Channels.BaseChannelSinkWithProperties
---> System.Runtime.Remoting.Channels.BaseChannelWithProperties
---> System.Runtime.Remoting.Messaging.ConstructionCallDictionary
---> System.Runtime.Remoting.Messaging.MCMDictionary
---> System.Runtime.Remoting.Messaging.MethodCallMessageWrapper+DictionaryWrapper
---> System.Runtime.Remoting.Messaging.MessageDictionary
---> System.Runtime.Remoting.Messaging.MethodReturnDictionary
---> System.Runtime.Remoting.Messaging.MethodReturnMessageWrapper+DictionaryWrapper
---> System.Security.NamedPermissionSet
---> System.Security.PermissionSet
---> System.Security.Policy.ApplicationTrustCollection
Press enter to continue ......