📚Linq

http://www.csharpstudy.com/Data/SQL-linq-dml.aspx

Normal Type

public class Actor
{
    public int actor_id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string last_update { get; set; }

}
static void Main(string[] args)
{
    Dictionary<int, Actor> dicData = getData(20);
    List<Actor> actors = dicData.Values.ToList();

    Console.WriteLine("existed Type");
    List<Actor> result = (from actor in actors
                  where actor.actor_id < 15 && actor.actor_id > 3
                  orderby actor.first_name descending
                  select actor).ToList();

    foreach(Actor actor in result)
    {
        Console.WriteLine("{0}, {1}", actor.actor_id, actor.first_name);
    }

    Console.WriteLine();
    Console.WriteLine("new Type");
    var newTypeResult = from actor in actors
                        where actor.actor_id < 15 && actor.actor_id > 3
                        orderby actor.first_name ascending
                        select new
                        {
                            aaa = actor.actor_id,
                            bbb = actor.first_name
                        };

    foreach (var actor in newTypeResult)
    {
        Console.WriteLine("{0}, {1}", actor.aaa, actor.bbb);
    }
}

Method Type

public class Actor
{
    public int actor_id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string last_update { get; set; }

}
static void Main(string[] args)
{
    Dictionary<int, Actor> dicData = getData(20);
    List<int> actor_id = dicData.Keys.ToList();
    List<Actor> actors = dicData.Values.ToList();

    Console.WriteLine("\nexisted Type");
    //List<Actor> result = (from actor in actors
    //              where actor.actor_id < 15 && actor.actor_id > 3
    //              orderby actor.first_name descending
    //              select actor).ToList();
    List<Actor> result = actors
        .Where(actor => actor.actor_id < 15 && actor.actor_id > 3)
        .OrderByDescending(actor => actor.first_name)
        .Select(actor => actor) //ėƒëžĩ가ëŠĨ.
        .ToList();

    foreach (Actor actor in result)
    {
        Console.WriteLine("{0}, {1}", actor.actor_id, actor.first_name);
    }

    Console.WriteLine("\nvalue change");
    result[0].actor_id = 123123;

    foreach (Actor actor in actors)
    {
        Console.WriteLine("{0}, {1}", actor.actor_id, actor.first_name);
    }

    Console.WriteLine("\nnew Type");
    //var newTypeResult = from actor in actors
    //                    where actor.actor_id < 15 && actor.actor_id > 3
    //                    orderby actor.first_name ascending
    //                    select new
    //                    {
    //                        aaa = actor.actor_id,
    //                        bbb = actor.first_name
    //                    };
    var newTypeResult = actors
        .Where(actor => actor.actor_id < 15 && actor.actor_id > 3)
        .OrderBy(actor => actor.first_name)
        .Select(actor => new
        {
            aaa = actor.actor_id,
            bbb = actor.first_name
        }).ToList();

    foreach (var actor in newTypeResult)
    {
        Console.WriteLine("{0}, {1}", actor.aaa, actor.bbb);
    }
}
existed Type
11, ZERO
14, VIVIEN
13, UMA
8, MATTHEW
12, KARL
5, JOHNNY
9, JOE
4, JENNIFER
7, GRACE
10, CHRISTIAN
6, BETTE

value change
1, PENELOPE
2, NICK
3, ED
4, JENNIFER
5, JOHNNY
6, BETTE
7, GRACE
8, MATTHEW
9, JOE
10, CHRISTIAN
123123, ZERO
12, KARL
13, UMA
14, VIVIEN
15, CUBA
16, FRED
17, HELEN
18, DAN
19, BOB
20, LUCILLE

new Type
6, BETTE
10, CHRISTIAN
7, GRACE
4, JENNIFER
9, JOE
5, JOHNNY
12, KARL
8, MATTHEW
13, UMA
14, VIVIEN

Group by

public class Actor
{
    public int actor_id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string last_update { get; set; }

}
static void Main(string[] args)
{
    Dictionary<int, Actor> dicData = getData(20);
    List<int> actor_id = dicData.Keys.ToList();
    List<Actor> actors = dicData.Values.ToList();

    Console.WriteLine("\nexisted Type");
    var result = (from actor in actors
                  where actor.actor_id < 15 && actor.actor_id > 1
                  orderby actor.first_name descending
                  group actor by actor.actor_id < 7 into g
                  select new { key = g.Key, obj = g });

/*
    var result = actors.Where(actor => actor.actor_id < 15 && actor.actor_id > 1)
        .OrderByDescending(actor => actor.first_name)
        .ThenByDescending(actor => actor.actor_id)
        .GroupBy(actor => actor.actor_id < 7)
        .Select(g => new
        {
            key = g.Key,
            obj = g
        });
*/

    foreach (var actor in result)
    {
        Console.WriteLine("\n{0}, {1} \n", actor.key, actor.obj);
        foreach (var actor2 in actor.obj)
        {
            Console.WriteLine("{0}, {1}", actor.key, actor2.actor_id);
        }
    }
}
existed Type

False, System.Linq.Grouping`2[System.Boolean,test.Program+Actor]

False, 11
False, 14
False, 13
False, 8
False, 12
False, 9
False, 7
False, 10

True, System.Linq.Grouping`2[System.Boolean,test.Program+Actor]

True, 2
True, 5
True, 4
True, 3
True, 6

Last updated