Intersect Operator

image_pdfimage_print
   
 

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

    


GroupJoin Operator

image_pdfimage_print
   
 

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

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

image_pdfimage_print

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

image_pdfimage_print
   
 
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

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