C# Linq的ToArray()方法 – 将序列转换为数组

  • Post category:C#

ToArray()方法是Linq中提供的一个方法,用于将一个序列转换为对应的数组。下面我们将详细讲解ToArray()方法的用法及其示例。

语法

ToArray()方法的语法如下:

public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source);

其中,参数source指定了要转换为数组的序列,注意是实现了IEnumerable<TSource>接口的类型,而返回值则为类型为TSource的数组。

示例

下面是两个示例:

示例1

int[] arr = {1, 2, 3, 4, 5};
var query = from n in arr where n % 2 == 0 select n;
int[] evenArr = query.ToArray();
Console.WriteLine(string.Join(",", evenArr)); // 输出 2,4

在这个示例中,我们声明了一个整型数组arr,然后使用Linq查询语句筛选出其中的偶数,并使用ToArray()方法将其转换为数组evenArr。最后使用Console.WriteLine()方法输出结果。运行结果为2,4

示例2

class Student
{
    public string Name {get;set;}
    public int Age {get;set;}
    public IList<string> Courses {get;set;}
}

Student[] students = new Student[]
{
    new Student { Name = "Tom", Age = 20, Courses = new string[] {"Math", "English"}.ToList() },
    new Student { Name = "Jack", Age = 18, Courses = new string[] {"Math", "Art"}.ToList() },
    new Student { Name = "Mary", Age = 22, Courses = new string[] {"English", "Chemistry"}.ToList() },
};

var query = from s in students where s.Age >= 20 select s.Courses.ToArray();
foreach(var courses in query)
{
    Console.WriteLine(string.Join(",", courses));
}

在这个示例中,我们声明了一个Student类,其包含姓名、年龄和课程列表等属性。然后我们定义了一个Student类型的数组students,并使用Linq查询语句,查询年龄大于等于20岁的学生的课程列表,再使用ToArray()方法将其转换为数组。

运行后输出结果为:

Math,English
English,Chemistry

从上面的示例可以看出,ToArray()方法非常方便,可以用于将一些无法直接使用数组的集合或查询结果转换成数组,方便后续操作。