Csharp/C Sharp/LINQ/select new

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

Constructor new object with select statement

<source lang="csharp"> using System; using System.Linq; using System.Collections; using System.Collections.Generic; public class Contact {

   public int Id;
   public string Name;
   public static void PublishContacts(Contact[] contacts) {
       foreach (Contact c in contacts)
           Console.WriteLine("Contact Id: {0} Contact: {1}", c.Id, c.Name);
   }

}

public class Employee {

   public int id;
   public string firstName;
   public string lastName;
   public static ArrayList GetEmployees() {
       ArrayList al = new ArrayList();
       al.Add(new Employee { id = 1, firstName = "J", lastName = "R" });
       al.Add(new Employee { id = 2, firstName = "W", lastName = "G" });
       al.Add(new Employee { id = 3, firstName = "A", lastName = "H" });
       return (al);
   }

} public class MainClass {

   public static void Main() {
       ArrayList alEmployees = Employee.GetEmployees();
       Contact[] contacts = alEmployees
           .Cast<Employee>()
           .Select(e => new Contact {
               Id = e.id,
               Name = string.Format("{0} {1}", e.firstName, e.lastName)
           })
           .ToArray<Contact>();
       Contact.PublishContacts(contacts);
   }

}

</source>


partitions an array of words into groups according to the first letter of each word.

<source lang="csharp"> using System; using System.Collections.Generic; using System.Linq; using System.Text; public class MainClass {

   public static void Main() {
       string[] words = { "b", "c", "a", "ba", "ae", "ch" };
       var wordGroups =
           from w in words
           group w by w[0] into g
           select new { FirstLetter = g.Key, Words = g };
       foreach (var g in wordGroups) {
           Console.WriteLine("Words that start with the letter "{0}":", g.FirstLetter);
           foreach (var w in g.Words) {
               Console.WriteLine(w);
           }
       }
   }

}

</source>


Query a List or objects and create new objects

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

} class Role {

   int _id;
   string role;
   public int ID {
       get { return _id; }
       set { _id = value; }
   }
   public string Role {
       get { return role; }
       set { role = value; }
   }

} class Program {

   static void Main(string[] args) {
       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"}
           };
       List<Role> roles = new List<Role> {
             new Role  { ID = 1, Role = "Manager" },
             new Role  { ID = 2, Role = "Developer" }
           };
       var query = from p in people
                   where p.ID == 1
                   select new { p.FirstName, p.LastName };
   }

}

</source>


select new

<source lang="csharp"> using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Linq; using System.Reflection; public class MainClass{

  public static void Main(){
           var q = from m in typeof(int).GetMethods()
                   orderby m.Name
                   group m by m.Name into gb
                   select new {Name = gb.Key};
  }

}

</source>