LINQ语法类似于SQL的语法

LINQ语法类似于SQL的语法如下,

Models.BookStoreEntities 是从添加新建项中的数据--->ADO.NET实体数据模型--->从数据库生成--->使用5.0框架(这个我用的)--->连接库--->模型命名空间(就是Models.表Entitles)
Entitles规范点就是表名加Entity 比如 StudentEntity

  

 #region LINQ语法可以让我们在项目使用一种类似于SQL的语法

                #region 投影查询,查询全部的书籍
                using (Models.BookStoreEntities db = new Models.BookStoreEntities())
                {
                    //基于表达式查询
                    var Books = from b in db.Books
                                select b;

                    //输出查询结果数量
                    Console.WriteLine(Books.Count());
                    //投影查询除了可以用上述基于表达式的方式实现之外,还可以用一种更简洁的函数方式实现
                    var Books1 = db.Books;
                    Console.WriteLine(Books1.Count());
                }
                #endregion


                #region 条件查询,比如查询书名为JavaScript语言与AJAX应用的书籍编号
                using (Models.BookStoreEntities db = new Models.BookStoreEntities())
                {
                    var BookWhere = from b in db.Books
                                    where b.Title == "JavaScript语言与AJAX应用"
                                    select b;
                    foreach (var book in BookWhere)
                        Console.WriteLine(book.BookId);

                    //同样的查询用函数方式实现
                    var BookWhere2 = db.Books.Where(x => x.Title == "JavaScript语言与AJAX应用");
                    foreach (var item in BookWhere2)
                        Console.WriteLine(item.BookId);

                    //在上述查询中,在函数方式实现的代码中用到了Lambda表达式描述查询条件
                }


                #endregion

                #region 排序和分页查询,比如查询全部订单,并按数量排序并分页
                using (Models.BookStoreEntities db = new Models.BookStoreEntities()) 
                {
                    //按数量排序并分页输出订单编号
                    var Order1 = (from o in db.Orders
                                  orderby o.Num
                                  select o
                                    ).Skip(0).Take(10);
                    //输出查询结果的编号
                    foreach(var oder in Order1)
                        Console.WriteLine(oder.BookId);

                    //以函数式方式实现查询
                    var Order2 = db.Orders.OrderBy(x => x.Num).Skip(0).Take(10);
                    foreach (var oder2 in Order2)
                        Console.WriteLine(oder2.BookId);
                }
                #endregion

                #region  聚合查询,比如查询书籍总数和价格
                using (Models.BookStoreEntities db = new Models.BookStoreEntities()) 
                {
                    //书籍总数
                    var num = db.Books.Count();
                    Console.WriteLine(num);
                    var price = db.Books.Min(x => x.Price);
                    Console.WriteLine(price);
                }
                #endregion

                #region 连接查询,比如查询书的订单编号
                using (Models.BookStoreEntities db = new Models.BookStoreEntities())
                {
                    var Order3 = from o in db.Orders
                                 join b in db.Books
                                 on o.BookId equals b.BookId
                                 select o;

                    //join关键字用于连接2个数据表,on和equals关键字用于指定的两个表是通过那个字段连接在一起的
                    foreach (var order3 in Order3)
                        Console.WriteLine(order3);
                }
                #endregion
               
                #endregion
生命中最值得欣慰的,莫过于一觉醒来,你还在身旁
原文地址:https://www.cnblogs.com/chaonuanxi/p/10293585.html