LINQ语法类似于SQL的语法

时间:2023-03-10 07:25:30
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().Take();
//输出查询结果的编号
foreach(var oder in Order1)
Console.WriteLine(oder.BookId); //以函数式方式实现查询
var Order2 = db.Orders.OrderBy(x => x.Num).Skip().Take();
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