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"};
IEnumerable<string> first = presidents.Take(5);
IEnumerable<string> second = presidents.Skip(4);
IEnumerable<string> intersect = first.Intersect(second);
Console.WriteLine("The count of the array is: " + presidents.Count());
Console.WriteLine("The count of the first sequence is: " + first.Count());
Console.WriteLine("The count of the second sequence is: " + second.Count());
Console.WriteLine("The count of the intersect sequence is: " + intersect.Count());
foreach (string name in intersect)
Console.WriteLine(name);
}
}
Month: February 2011
GroupJoin Operator
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Employee {
public int id;
public string firstName;
public string lastName;
public static ArrayList GetEmployeesArrayList() {
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" });
al.Add(new Employee { id = 4, firstName = "D", lastName = "L" });
al.Add(new Employee { id = 101, firstName = "K", lastName = "F" });
return (al);
}
public static Employee[] GetEmployeesArray() {
return ((Employee[])GetEmployeesArrayList().ToArray());
}
}
public class EmployeeOptionEntry {
public int id;
public long optionsCount;
public DateTime dateAwarded;
public static EmployeeOptionEntry[] GetEmployeeOptionEntries() {
EmployeeOptionEntry[] empOptions = new EmployeeOptionEntry[] {
new EmployeeOptionEntry {
id = 1,
optionsCount = 2,
dateAwarded = DateTime.Parse("1999/12/31") },
new EmployeeOptionEntry {
id = 101,
optionsCount = 2,
dateAwarded = DateTime.Parse("1998/12/31") }
};
return (empOptions);
}
}
public class MainClass {
public static void Main() {
Employee[] employees = Employee.GetEmployeesArray();
EmployeeOptionEntry[] empOptions = EmployeeOptionEntry.GetEmployeeOptionEntries();
var employeeOptions = employees
.GroupJoin(
empOptions,
e => e.id,
o => o.id,
(e, os) => new {
id = e.id,
name = string.Format("{0} {1}", e.firstName, e.lastName),
options = os.Sum(o => o.optionsCount)
});
foreach (var item in employeeOptions)
Console.WriteLine(item);
}
}
Query by position
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Reflection;
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"},
new Person { ID = 3, IDRole = 2, LastName = "G", FirstName = "M"},
new Person { ID = 4, IDRole = 3, LastName = "C", FirstName = "G"}
};
var query = people.Select((p, index) => new { Position = index, p.FirstName, p.LastName });
}
}
Use an indexed Where clause (where the length of the number's name is shorter than its value)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class MainClass {
public static void Main() {
string[] digits = { “zero”, “one”, “two”, “three”, “four”, “five”, “six”, “seven”, “eight”, “nine” };
var shortDigits = digits.Where((digit, index) => digit.Length < index); foreach (var d in shortDigits) { Console.WriteLine("The word {0} is shorter than its value.", d); } } } [/csharp]
Select – Indexed: prints the value of the integer and whether it matches its index in the array
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class MainClass {
public static void Main() {
int[] numbers = { 5, 4, 1, 3, 9};
var numsInPlace = numbers.Select((num, index) => new { Num = num, InPlace = (num == index) });
foreach (var n in numsInPlace) {
Console.WriteLine("{0}: {1}", n.Num, n.InPlace);
}
}
}
Use index when querying array with LINQ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Drawing;
public class Book {
public String Title { get; set; }
public override String ToString() {
return Title;
}
}
class Program {
static public Book[] Books =
{
new Book {Title="F"},
new Book {Title="B"}
};
static void Main(string[] args) {
var books =
Books
.Select((book, index) => new { index, book.Title })
.OrderBy(book => book.Title);
}
}
use Linq Intersect to intersect two arrays
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
public class MainClass{
public static void Main(){
int[] numbers = {1, 1, 2, 3, 3};
int[] numbers2 = {1, 3, 3, 4};
Console.Write(numbers.Intersect(numbers2));
}
}

