Csharp/C Sharp/LINQ/ToArray — различия между версиями

Материал из .Net Framework эксперт
Перейти к: навигация, поиск
м (1 версия)
 
м (1 версия)
 
(нет различий)

Текущая версия на 14:38, 26 мая 2010

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 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>


generates 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>