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};
}
}
Month: February 2011
Query a List or objects and create new objects
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 };
}
}
partitions an array of words into groups according to the first letter of each word.
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);
}
}
}
}
Constructor new object with select statement
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);
}
}
Reverse does exactly as it says
using System;
using System.Collections.Generic;
using System.Linq;
public class MainClass {
public static void Main() {
int[] numbers = { 10, 9, 8, 7, 6 };
IEnumerable<int> reversed = numbers.Reverse(); // { 6, 7, 8, 9, 10 }
}
}
Use from where select to choose the Employees in the IT department from a tree
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Tree<TreeNode> : IEnumerable<TreeNode> where TreeNode : IComparable<TreeNode> {
public Tree(TreeNode nodeValue) {
this.NodeData = nodeValue;
this.LeftTree = null;
this.RightTree = null;
}
public void Insert(TreeNode newItem) {
TreeNode currentNodeValue = this.NodeData;
if (currentNodeValue.CompareTo(newItem) > 0) {
if (this.LeftTree == null) {
this.LeftTree = new Tree<TreeNode>(newItem);
} else {
this.LeftTree.Insert(newItem);
}
} else {
if (this.RightTree == null) {
this.RightTree = new Tree<TreeNode>(newItem);
} else {
this.RightTree.Insert(newItem);
}
}
}
public void WalkTree() {
if (this.LeftTree != null) {
this.LeftTree.WalkTree();
}
Console.WriteLine(this.NodeData.ToString());
if (this.RightTree != null) {
this.RightTree.WalkTree();
}
}
public TreeNode NodeData { get; set; }
public Tree<TreeNode> LeftTree { get; set; }
public Tree<TreeNode> RightTree { get; set; }
IEnumerator<TreeNode> IEnumerable<TreeNode>.GetEnumerator() {
if (this.LeftTree != null) {
foreach (TreeNode item in this.LeftTree) {
yield return item;
}
}
yield return this.NodeData;
if (this.RightTree != null) {
foreach (TreeNode item in this.RightTree) {
yield return item;
}
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
throw new NotImplementedException();
}
}
class Employee : IComparable<Employee> {
public string FirstName { get; set; }
public string LastName { get; set; }
public string Department { get; set; }
public int Id { get; set; }
public override string ToString() {
return String.Format("Id: {0}, Name: {1} {2}, Dept: {3}", this.Id, this.FirstName, this.LastName, this.Department);
}
int IComparable<Employee>.CompareTo(Employee other) {
if (other == null)
return 1;
if (this.Id > other.Id)
return 1;
if (this.Id < other.Id)
return -1;
return 0;
}
}
class Program {
static void Main() {
Tree<Employee> empTree = new Tree<Employee>(new Employee { Id = 1, FirstName = "Janet", LastName = "Gates", Department = "IT" });
empTree.Insert(new Employee { Id = 2, FirstName = "O", LastName = "G", Department = "Marketing" });
empTree.Insert(new Employee { Id = 4, FirstName = "K", LastName = "H", Department = "IT" });
empTree.Insert(new Employee { Id = 6, FirstName = "L", LastName = "H", Department = "Sales" });
empTree.Insert(new Employee { Id = 3, FirstName = "E", LastName = "L", Department = "Sales" });
empTree.Insert(new Employee { Id = 5, FirstName = "D", LastName = "L", Department = "Marketing" });
var ITEmployees = from e in empTree
where String.Equals(e.Department, "IT")
select e;
foreach (var emp in ITEmployees)
Console.WriteLine(emp);
}
}
All employees in a tree are grouped by department
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Tree<TreeNode> : IEnumerable<TreeNode> where TreeNode : IComparable<TreeNode> {
public Tree(TreeNode nodeValue) {
this.NodeData = nodeValue;
this.LeftTree = null;
this.RightTree = null;
}
public void Insert(TreeNode newItem) {
TreeNode currentNodeValue = this.NodeData;
if (currentNodeValue.CompareTo(newItem) > 0) {
if (this.LeftTree == null) {
this.LeftTree = new Tree<TreeNode>(newItem);
} else {
this.LeftTree.Insert(newItem);
}
} else {
if (this.RightTree == null) {
this.RightTree = new Tree<TreeNode>(newItem);
} else {
this.RightTree.Insert(newItem);
}
}
}
public void WalkTree() {
if (this.LeftTree != null) {
this.LeftTree.WalkTree();
}
Console.WriteLine(this.NodeData.ToString());
if (this.RightTree != null) {
this.RightTree.WalkTree();
}
}
public TreeNode NodeData { get; set; }
public Tree<TreeNode> LeftTree { get; set; }
public Tree<TreeNode> RightTree { get; set; }
IEnumerator<TreeNode> IEnumerable<TreeNode>.GetEnumerator() {
if (this.LeftTree != null) {
foreach (TreeNode item in this.LeftTree) {
yield return item;
}
}
yield return this.NodeData;
if (this.RightTree != null) {
foreach (TreeNode item in this.RightTree) {
yield return item;
}
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
throw new NotImplementedException();
}
}
class Employee : IComparable<Employee> {
public string FirstName { get; set; }
public string LastName { get; set; }
public string Department { get; set; }
public int Id { get; set; }
public override string ToString() {
return String.Format("Id: {0}, Name: {1} {2}, Dept: {3}", this.Id, this.FirstName, this.LastName, this.Department);
}
int IComparable<Employee>.CompareTo(Employee other) {
if (other == null)
return 1;
if (this.Id > other.Id)
return 1;
if (this.Id < other.Id)
return -1;
return 0;
}
}
class Program {
static void Main() {
Tree<Employee> empTree = new Tree<Employee>(new Employee { Id = 1, FirstName = "Janet", LastName = "Gates", Department = "IT" });
empTree.Insert(new Employee { Id = 2, FirstName = "O", LastName = "G", Department = "Marketing" });
empTree.Insert(new Employee { Id = 4, FirstName = "K", LastName = "H", Department = "IT" });
empTree.Insert(new Employee { Id = 6, FirstName = "L", LastName = "H", Department = "Sales" });
empTree.Insert(new Employee { Id = 3, FirstName = "E", LastName = "L", Department = "Sales" });
empTree.Insert(new Employee { Id = 5, FirstName = "D", LastName = "L", Department = "Marketing" });
var employeesByDept = empTree.GroupBy(e => e.Department);
foreach (var dept in employeesByDept)
{
Console.WriteLine("Department: {0}", dept.Key);
foreach (var emp in dept)
{
Console.WriteLine(" {0} {1}", emp.FirstName, emp.LastName);
}
}
}
}

