using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //创建数据库实体 ModelStudentContainer DemoDB = new ModelStudentContainer(); #region 增加数据 ////创建具体实体(表中一行) //Student stu1 = new Student() //{ // ID = 1, // Name = "张飞", // Age = 20 //}; //Student stu2 = new Student() //{ // ID = 2, // Name = "关羽", // Age = 21 //}; //Student stu3 = new Student() //{ // ID = 3, // Name = "赵云", // Age = 22 //}; //Student stu4 = new Student() //{ // ID = 4, // Name = "刘备", // Age = 23 //}; //Student stu5 = new Student() //{ // ID = 5, // Name = "刘表", // Age = 24 //}; //Student stu6 = new Student() //{ // ID = 6, // Name = "刘禅", // Age = 25 //}; ////将实体stu添加到数据库实体对象中 //DemoDB.Student.AddObject(stu1); //DemoDB.Student.AddObject(stu2); //DemoDB.Student.AddObject(stu3); //DemoDB.Student.AddObject(stu4); //DemoDB.Student.AddObject(stu5); //DemoDB.Student.AddObject(stu6); ////保存对数据库的修改 //DemoDB.SaveChanges(); #endregion #region 查询1:一般查询,查询所有数据 //var result = from u in DemoDB.Student // select u; //foreach (var item in result) //{ // Console.WriteLine("ID:{0},姓名:{1},年龄:{2}。", item.ID, item.Name, item.Age); //} #endregion #region 查询2:使用ToList防止延迟加载,拆分子查询 ////这个查询结果可以保存到服务器内存中 //var result1 = (from u in DemoDB.Student // where u.Age >= 22 // select u).ToList<Student>(); //var result2 = from u in result1 // where u.Name != "赵云" // select u; //foreach (var item in result2) //{ // Console.WriteLine("ID:{0},姓名:{1},年龄:{2}。", item.ID, item.Name, item.Age); //} #endregion #region 查询3:使用Where方法(lambda表达式) ////使用了Where泛型方法,要传入一个lambda表达式 //var result = DemoDB.Student // .Where<Student>(t => t.ID == 1); //foreach (var item in result) //{ // Console.WriteLine("ID:{0},姓名:{1},年龄:{2}。", item.ID, item.Name, item.Age); //} #endregion #region 查询4:Linq分页查询 ////要跳过多少页 //int skipPage; ////每页两条数据 //int countPerPage=2; ////从跳过0页到跳过2页(输出第1-3页) //for (skipPage = 0; skipPage <= 2; skipPage++) //{ // var result = DemoDB.Student ////分页必须排序 // .OrderBy(t => t.ID) ////跳过指定页数 // .Skip<Student>(skipPage * countPerPage) ////获取条数 // .Take<Student>(countPerPage); // Console.WriteLine("第{0}页:", skipPage + 1); ////输出查询结果(该页) // foreach (var item in result) // { // Console.WriteLine("ID:{0},姓名:{1},年龄:{2}。", item.ID, item.Name, item.Age); // } // Console.WriteLine(); //} #endregion #region 查询5:使用匿名类查询多个字段 //var result = from p in DemoDB.Student // where p.ID < 4 ////定义一个包含了ID和Name信息的匿名类 // select new { p.ID, p.Name }; //foreach (var item in result) //{ ////这里无法输出年龄 // Console.WriteLine("ID:{0},姓名:{1}。", item.ID, item.Name); //} #endregion #region 修改1:修改1条记录 ////这里没有写where字句,会查询出4条记录 //var result = from u in DemoDB.Student // select u; ////但是这个方法一次只能取出一条记录 ////注:First方法如果返回空值则抛异常 //var target = result.FirstOrDefault<Student>(); ////所以只修改了查询结果集中的第一条记录 //target.Name = "司马懿"; //DemoDB.SaveChanges(); #endregion #region 修改2:修改多条记录 //var result = from u in DemoDB.Student // select u; ////使用循环方式,修改所有查询到的记录 //foreach (var item in result) //{ // item.Age = 10; //} //DemoDB.SaveChanges(); #endregion #region 删除 //var result = from u in DemoDB.Student // where u.Name == "关羽" // select u; ////删除所有查询结果(这里只有一条结果) //foreach (var item in result) //{ // DemoDB.Student.DeleteObject(item); //} //DemoDB.SaveChanges(); #endregion Console.WriteLine("执行完毕!"); Console.ReadKey(); } } }