LINQ statement query

LINQ statement query

Linq query expression is a very important part of linq , it can retrieve data from one or more given data sources, and specify the data type and representation of the retrieved results. A linq query expression consists of one or more linq query clauses according to certain rules. The eight statement expressions of linq query include from clause, where clause, select clause, orderby clause, group clause, into clause, join clause, and let clause. Divided into simple query, complex query, aggregation query, group query.

from... clause: specifies the data source and scope variables for the query operation

E.g:

int[] values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
        var value = from v in values
                    where v < 6
                    select v;
        Response.Write("Query result: <br>");
        foreach (var v in value)
        {
            Response.Write(v.ToString() + "<br>");
        }

select clause: specify the type and representation of query results

E.g:

 
 
int[] values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
        var value = from v in values
                    where v < 4
                    select v;
        Response.Write("Query result: <br>");
        foreach (var v in value)
        {
            Response.Write(v.ToString() + "<br>");
        }

where clause: logical conditions for filtering elements, generally composed of logical operators

E.g:

 
 
int[] values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
        var value = from v in values
                    where v < 9 && v > 6
                    select v;
        Response.Write("Query result: <br>");
        foreach (var v in value)
        {
            Response.Write(v.ToString() + "<br>");
        }

group..by clause: group the query

E.g:

 
 
protected void Page_Load(object sender, EventArgs e)
    {
        int[] values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
        var value = from v in values
                    group v by v % 2 == 0; ;
        // output query result
        foreach (var i in value)
        {
            foreach (int j in i)
            {
                Response.Write(j + "<br>");
            }
        }
    }

order...by clause: Sort the query results, which can be ascending or descending order.

E.g:

 
 
protected void Page_Load(object sender, EventArgs e)
        {
            int[] values = { 5, 8, 3, 4, 1, 6, 7, 2, 9, 0 };
            var value = from v in values
                        where v < 3 || v > 6
                        orderby v descending
                        select v;
            // output query result
            foreach (var i in value)
            {
                Response.Write(i + "<br>");
            }
        }

into clause: provide a temporary identifier from when the result of a join, group or select clause

E.g:

protected void Page_Load(object sender, EventArgs e)
        {
            int[] values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
            var value = from v in values
                        group v by v % 2 == 0 into g
                        where g.Max() > 8 //After grouping, find groups greater than 8 in the group
                        select g;
            // output query result
            foreach (var i in value)
            {
                foreach (int j in i)
                {
                    Response.Write(j + "<br>");
                }
            }
        }

join clause: joins data sources for multiple query operations

E.g:

private void InnerJoinQuery()
 2         {
 3
 4             List<UserBaseInfo> users = new List<UserBaseInfo>();
 5             List<RoleInfo> roles = new List<RoleInfo>();
 6
 7
 8             for (int i = 1; i < 10; i++)
 9             {
10                 users.Add(new UserBaseInfo(i, "users0" + i.ToString(), "user0" + i.ToString() + "@web.com", i * 2));
11                 roles.Add(new RoleInfo(i, "RoleName0" + i.ToString()));
12             }
13
14 //The query ID value is less than 9, and the role includes users in roles
15             var result = from u in users
16                          join r in roles on u.RoleId equals r.ID
17
18                          where u.ID < 9
19                          select u;
20
21             foreach (var u in result)
22             {
23
24                     Response.Write(u.UserName + "</br>");
25  
26             }
27         }

let clause: introduce a scope variable for storing the result of a self-expression in a query expression

E.g:

private void LetQuery()
 2         {
 3
 4             List<UserBaseInfo> users = new List<UserBaseInfo>();
 5
 6             for(int i=1;i<10;i++)
 7             {
 8                 users.Add(new UserBaseInfo(i,"users0"+i.ToString(),"user0"+i.ToString()+"@web.com"));
 9             }
10
11             var result = from u in users
12                         let number= Int32.Parse(u.UserName.Substring(u.UserName.Length - 2))
13                          group u by number % 2 == 0 into g
14
15                          where g.Count() < 5
16
17                          select g;
18
19             foreach (var v in result)
20             {
21                 foreach (UserBaseInfo u in v)
22                 {
23                     Response.Write(u.UserName + "</br>");
24                 }
25             }
26         }



Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325909843&siteId=291194637