Csharp/CSharp Tutorial/LINQ/ToLookup

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

Call ILookUp returned from ToLookup to get the IEnumerable

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Employee {
    public string birthYear;
    public string firstName;
    public string lastName;
    public static Employee[] GetEmployees() {
        Employee[] actors = new Employee[] {
      new Employee { birthYear = "1964", firstName = "K", lastName = "R" },
      new Employee { birthYear = "1968", firstName = "O", lastName = "W" },
      new Employee { birthYear = "1960", firstName = "J", lastName = "S" },
      new Employee { birthYear = "1965", firstName = "S",lastName = "B" },
    };
       return (actors);
    }
}
public class MyStringifiedNumberComparer : IEqualityComparer<string> {
    public bool Equals(string x, string y) {
        return (Int32.Parse(x) == Int32.Parse(y));
    }
    public int GetHashCode(string obj) {
        return Int32.Parse(obj).ToString().GetHashCode();
    }
}
public class MainClass {
    public static void Main() {
        ILookup<string, string> lookup = Employee.GetEmployees()
          .ToLookup(k => k.birthYear,a => string.Format("{0} {1}", a.firstName, a.lastName),new MyStringifiedNumberComparer());
        IEnumerable<string> actors = lookup["1965"];
        foreach (var actor in actors)
            Console.WriteLine("{0}", actor);
    }
}

ToLookup Demo

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Employee {
    public string birthYear;
    public string firstName;
    public string lastName;
    public static Employee[] GetActors() {
        Employee[] actors = new Employee[] {
      new Employee { birthYear = "1964", firstName = "K", lastName = "R" },
      new Employee { birthYear = "1968", firstName = "O", lastName = "W" },
      new Employee { birthYear = "1960", firstName = "J", lastName = "S" },
      new Employee { birthYear = "1964", firstName = "S",lastName = "B" },
    };
        return (actors);
    }
}
public class MyStringifiedNumberComparer : IEqualityComparer<string> {
    public bool Equals(string x, string y) {
        return (Int32.Parse(x) == Int32.Parse(y));
    }
    public int GetHashCode(string obj) {
        return Int32.Parse(obj).ToString().GetHashCode();
    }
}
public class MainClass {
    public static void Main() {
        ILookup<string, Employee> lookup = Employee.GetActors()
          .ToLookup(k => k.birthYear, new MyStringifiedNumberComparer());
        IEnumerable<Employee> actors = lookup["1968"];
        foreach (var actor in actors)
            Console.WriteLine("{0} {1}", actor.firstName, actor.lastName);
    }
}

ToLookup with int and string

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Employee {
    public int birthYear;
    public string firstName;
    public string lastName;
    public static Employee[] GetEmployees() {
        Employee[] actors = new Employee[] {
       new Employee { birthYear = 1964, firstName = "K", lastName = "R" },
       new Employee { birthYear = 1968, firstName = "O", lastName = "W" },
       new Employee { birthYear = 1960, firstName = "J", lastName = "S" },
       new Employee { birthYear = 1964, firstName = "S", lastName = "B" },
    };
        return (actors);
    }
}
public class MainClass {
    public static void Main() {
        ILookup<int, string> lookup = Employee.GetEmployees()
          .ToLookup(k => k.birthYear,
                    a => string.Format("{0} {1}", a.firstName, a.lastName));
        IEnumerable<string> actors = lookup[1964];
        foreach (var actor in actors)
            Console.WriteLine("{0}", actor);
    }
}

Use ToLookup to search object property

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Employee {
    public int birthYear;
    public string firstName;
    public string lastName;
    public static Employee[] GetEmployees() {
        Employee[] actors = new Employee[] {
       new Employee { birthYear = 1964, firstName = "K", lastName = "R" },
       new Employee { birthYear = 1968, firstName = "O", lastName = "W" },
       new Employee { birthYear = 1960, firstName = "J", lastName = "S" },
       new Employee { birthYear = 1964, firstName = "S", lastName = "B" },
    };
        return (actors);
    }
}
public class MainClass {
    public static void Main() {
        ILookup<int, Employee> lookup = Employee.GetEmployees().ToLookup(k => k.birthYear);
        IEnumerable<Employee> actors = lookup[1964];
        foreach (var actor in actors)
            Console.WriteLine("{0} {1}", actor.firstName, actor.lastName);
    }
}