Csharp/CSharp Tutorial/LINQ/ToArray
Содержание
Calling the ToArray Operator
<source lang="csharp">using System; using System.Linq; using System.Collections; using System.Collections.Generic; public class MainClass {
public static void Main() { string[] presidents = {"G", "H", "a", "H", "over", "Jack"}; string[] names = presidents.OfType<string>().ToArray(); foreach (string name in names) Console.WriteLine(name); }
}</source>
Convert query result to an Array
<source lang="csharp">using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Linq; class Employee {
int _id; int _idRole; string _lastName; string _firstName; public int ID { get { return _id; } set { _id = value; } } public int IDRole { get { return _idRole; } set { _idRole = value; } } public string LastName { get { return _lastName; } set { _lastName = value; } } public string FirstName { get { return _firstName; } set { _firstName = value; } }
} public class MainClass {
public static void Main() { List<Employee> people = new List<Employee> { new Employee { ID = 1, IDRole = 1, LastName = "A", FirstName = "B"}, new Employee { ID = 2, IDRole = 2, LastName = "G", FirstName = "T"} }; var query = from p in people where p.LastName.Length == 4 select p.LastName; string[] names = query.ToArray(); for (int i = 0; i < names.Length; i++) Console.WriteLine(names[i]); }
}</source>
Convert query to array
<source lang="csharp">using System; using System.Collections.Generic; using System.Text; using System.Xml.Linq; using System.Linq;
class Car { public string PetName; public string Color; public int Speed; public string Make; public override string ToString() { return string.Format("Make={0}, Color={1}, Speed={2}, PetName={3}",Make, Color, Speed, PetName); } } class Program { static void Main(string[] args) { Car[] myCars = new []{ new Car{ PetName = "A", Color = "Silver", Speed = 100, Make = "BMW"}, new Car{ PetName = "B", Color = "Black", Speed = 55, Make = "VW"}, new Car{ PetName = "C", Color = "White", Speed = 43, Make = "Ford"} }; var subset = (from c in myCars where c.Speed > 55 select c).ToArray<Car>(); foreach (Car c in subset) { Console.WriteLine("{0} is going {1} MPH", c.PetName, c.Speed); } } }</source>
Convert query to array with ToArray
<source lang="csharp">using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.IO; using System.Reflection; using System.Linq; using System.Xml; using System.Xml.Linq; class Person {
int _id; int _idRole; string _lastName; string _firstName; public int ID { get { return _id; } set { _id = value; } } public int IDRole { get { return _idRole; } set { _idRole = value; } } public string LastName { get { return _lastName; } set { _lastName = value; } } public string FirstName { get { return _firstName; } set { _firstName = value; } }
} class Program {
static void Main(string[] args) { List<Person> people = new List<Person> { new Person { ID = 1, IDRole = 1, LastName = "A", FirstName = "B"}, new Person { ID = 2, IDRole = 2, LastName = "G", FirstName = "T"} }; var query = people .Where(p => p.ID == 1) .Select(p => new { p.FirstName, p.LastName }) .ToArray(); people[0].FirstName = "F"; }
}</source>
Generating an array of double values by first using a query expression with orderby
<source lang="csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text; public class MainClass {
public static void Main() { double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 }; var sortedDoubles = from d in doubles orderby d descending select d; var doublesArray = sortedDoubles.ToArray(); Console.WriteLine("Every other double from highest to lowest:"); for (int d = 0; d < doublesArray.Length; d += 2) { Console.WriteLine(doublesArray[d]); } }
}</source>
To List: convert query result to list
<source lang="csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text; public class MainClass {
public static void Main() { string[] words = { "ch", "a", "b" }; var sortedWords = from w in words orderby w select w; var wordList = sortedWords.ToList(); Console.WriteLine("The sorted word list:"); foreach (var w in wordList) { Console.WriteLine(w); } }
}</source>
Use Conversion Operators ToArray
<source lang="csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text; public class MainClass {
public static void Main() { double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 }; var sortedDoubles = from d in doubles orderby d descending select d; var doublesArray = sortedDoubles.ToArray(); Console.WriteLine("Every other double from highest to lowest:"); for (int d = 0; d < doublesArray.Length; d += 2) { Console.WriteLine(doublesArray[d]); } }
}</source>