OrderBy with passing a lambda function

   
 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class CaseInsensitiveComparer : IComparer<string> {
    public int Compare(string x, string y) {
        return string.Compare(x, y, true);
    }
}

public class MainClass {
    public static void Main() {

        string[] words = { "a", "A", "b", "B", "C", "c" };

        var sortedWords = words.OrderBy(a => a, new CaseInsensitiveComparer());


    }
}

    


products sorted by the number of units of each product that are in stock

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class MainClass {
public static void Main() {

List products = GetProductList();

var sortedProducts =
from p in products
orderby p.UnitsInStock descending
select p;

Console.Write(sortedProducts);
}
static List GetProductList() {
List empTree = new List();
empTree.Add(new Product { ProductName = “A”, Category = “O”, UnitPrice = 12, UnitsInStock = 5, Total = 36, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
empTree.Add(new Product { ProductName = “B”, Category = “O”, UnitPrice = 2, UnitsInStock = 4, Total = 35, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
empTree.Add(new Product { ProductName = “C”, Category = “O”, UnitPrice = 112, UnitsInStock = 3, Total = 34, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
empTree.Add(new Product { ProductName = “D”, Category = “O”, UnitPrice = 112, UnitsInStock = 0, Total = 33, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
empTree.Add(new Product { ProductName = “E”, Category = “O”, UnitPrice = 1112, UnitsInStock = 2, Total = 32, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
empTree.Add(new Product { ProductName = “F”, Category = “O”, UnitPrice = 11112, UnitsInStock = 0, Total = 31, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
return empTree;
}
}
class Product : IComparable {
public string ProductName { get; set; }
public string Category { get; set; }
public int UnitPrice { get; set; }
public int UnitsInStock { get; set; }
public int Total { get; set; }
public DateTime OrderDate { get; set; }
public int Id { get; set; }

public override string ToString() {
return String.Format(“Id: {0}, Name: {1} , Category: {3}”, this.Id, this.ProductName, this.Category);
}
int IComparable.CompareTo(Product other) {
if (other == null)
return 1;
if (this.Id > other.Id)
return 1;

if (this.Id < other.Id) return -1; return 0; } } [/csharp]

sorted alphabetically in descending order, using a case insensitive comparision.

   
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class CaseInsensitiveComparer : IComparer<string> {
    public int Compare(string x, string y) {
        return string.Compare(x, y, true);
    }
}

public class MainClass {
    public static void Main() {

        string[] words = { "a", "A", "b", "B", "C", "c" };

        var sortedWords = words.OrderByDescending(a => a, new CaseInsensitiveComparer());

    }
}

    


string array sorted by the length each element

   
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class MainClass {
    public static void Main() {

        string[] words = { "abc", "bcd", "def" };

        var sortedWords =
            from w in words
            orderby w.Length
            select w;

        Console.WriteLine("The sorted list of words (by length):");
        foreach (var w in sortedWords) {
            Console.WriteLine(w);
        }
    }
}

    


an untidy nested query

   
 

using System;
using System.Collections.Generic;
using System.Linq;
public class MainClass {
    public static void Main() {
        string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };

        IEnumerable<string> query =
          Enumerable.Select(
            Enumerable.OrderBy(
              Enumerable.Where(
                names, n => n.Contains("a")
              ), n => n.Length
            ), n => n.ToUpper()
          );
    }
}

    


Query an array of object by its property value

   
 
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 void Main(string[] args) {
        Book[] books = {
      new Book { Title="A" },
      new Book { Title="F" },
      new Book { Title="E" } };

        var titles =
          books
            .Where(book => book.Title.Contains("A"))
            .Select(book => book.Title);

    }
}