热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#linq简单查询程序案例1,工作中第二个linq查询方法的实现(一看就懂)

流程1建立数据库表。2生成模型.生成模型有3步。这是查询的数据源,依据的查询数据源来源所在。3linq查询代码。1数据库部分2生成模型用命令行安装更快

流程

1 建立数据库表。

2 生成模型.

  生成模型有3步。这是查询的数据源,依据的查询数据源来源所在。 

3 linq查询代码。

1数据库部分

 2 生成模型

  用命令行安装更快!

 

成功success 生成模型。 生成上下文类,与学生的实体类,学生这应该算实体类了. 

   3 进行数据查询,linq查询代码的写入测试。 

  

如图所示,查询操作的数据源是这个数据库中的学生表数据。 

  通过EFcore框架代码,向数据库添加数据,效果:

    f5打印效果: 数据库数据变成7条,增加的一条数据,已经成功显示了。

代码增加了许多注释,以明白其中的逻辑所在。 

using System;
//1 先引入命名空间。 Clown learning ? method
using System.Collections.Generic; // 命名空间 
using System.Linq; // linq 是一种语言集成查询。 
//2.1 上下文类的命名空间引入.使用解决方法的名字,然后.模型2 就可以了。
using ConsoleLinq.Models2;/** linq查询1 先引入命名空间 2 2 写方法。 Add2.1 上下文类,实例对象以及引入命名空间。 */
namespace ConsoleLinq
{class Program{static void Main(string[] args){//Console.WriteLine("Hello World!");Add();//这是一个添加方法}//在main外面,去写添加的方法。去定义方法。定义方法不能定义到主函数里面。/*方法格式public static void Add(){}定义方法的语法形式如下。访问修饰符 修饰符 返回值类型 方法名(参数列表)
{语句块;
}*/// 添加方法。 可以通过这个方法,往数据库学生表中添加数据。public static void Add(){//写到这里报错的就解决了。引入上下类命名空间就行了。按f12可以跳转到数据库上下文类中,代表成功 可以用。Test3Context _context = new Test3Context();// 针对数据库中学生表的面向对象编程案例1 /*面向对象编程的核心是对象,要创建一个对象,首先要有一个类。这里的类已经有了,是根据数据库表来的,学生表就是一个类,是一个学生类。 然后是new一个学生类的实例对象。 下面代码实现了,学生类的实例对象。 */Student1 variable = new Student1();// new一个学生类对象。 用变量.字段,可以去操作数据库数据了。是这么样的一个逻辑过程。variable.Name = "变量名字添加数据";//variable.Birthday = "" ;variable.ChineseScores = 83;variable.MathScores = 99;//添加 _context.Student1s.Add(variable);// 上下文 学生表 添加方法 (变量);_context.SaveChanges();//打印Console.WriteLine(_context.Student1s.Count());}}
}

 这里还有类的调用,一个学生类,一个上下文类。需要的朋友,可以留下微信,或者加微信联系要的。或者去下载资源中去下载。 

   重点在这里,linq查询第二个方法的实现。

      需求:

2.获取对象,获取第一个,最后一个  

FirstOrDefault() ,获取第一个没有返回 null,不报错

LastOrDefault()

   

//2.获取对象,获取第一个,最后一个,
//FirstOrDefault()
//LastOrDefault()
Course couse2 = _context.Courses.Where(q => q.CourseId == 5).FirstOrDefault();
Course couse3 = _context.Courses.Where(q => q.CourseId == 5).LastOrDefault();

self 代码实现;

using System;
//1 先引入命名空间。 Clown learning ? method
using System.Collections.Generic; // 命名空间 
using System.Linq; // linq 是一种语言集成查询。 
//2.1 上下文类的命名空间引入.使用解决方法的名字,然后.模型2 就可以了。
using ConsoleLinq.Models2;/** linq查询1 先引入命名空间 2 2 写方法。 Add2.1 上下文类,实例对象以及引入命名空间。 */
namespace ConsoleLinq
{class Program{static void Main(string[] args){//Console.WriteLine("Hello World!");//Add();//这是一个添加方法//查询方法的调用.Query(); //这里是调用方法。查询方法的调用。使用一个方法。 必须主函数中去调用。 }//在main外面,去写添加的方法。去定义方法。定义方法不能定义到主函数里面。/*方法格式public static void Add(){}定义方法的语法形式如下。访问修饰符 修饰符 返回值类型 方法名(参数列表){语句块;}*/// 定义一个添加方法。 可以通过这个方法,往数据库学生表中添加数据。public static void Add(){//写到这里报错的就解决了。引入上下类命名空间就行了。按f12可以跳转到数据库上下文类中,代表成功 可以用。Test3Context _context = new Test3Context();// 针对数据库中学生表的面向对象编程案例1 /*面向对象编程的核心是对象,要创建一个对象,首先要有一个类。这里的类已经有了,是根据数据库表来的,学生表就是一个类,是一个学生类。 然后是new一个学生类的实例对象。 下面代码实现了,学生类的实例对象。 */Student1 variable = new Student1();// new一个学生类对象。 用变量.字段,可以去操作数据库数据了。是这么样的一个逻辑过程。variable.Name = "变量名字添加数据";//variable.Birthday = "" ;variable.ChineseScores = 83;variable.MathScores = 99;//添加 _context.Student1s.Add(variable);// 上下文 学生表 添加方法 (变量);_context.SaveChanges();//打印Console.WriteLine(_context.Student1s.Count());}//定义1个查询方法。 先写方法再去调用。先定义一个查询方法,然后去主函数方法中调用的顺序。public static void Query(){//面向对象编程,实例一个上下文类对象。上下文类代码的写入。因为下面要查询,这或者可以理解为要查询对应类,数据源所在。Test3Context _context = new Test3Context();//linq查询 最基础的查询 Student1 variable =_context.Student1s.//学生表。数据源所在。Where(q => q. Id == 5).// 查询条件设置.如果 id 等于7. 实际上就是获取ID等于7的数据。 FirstOrDefault();// 获取第一个 最后一个/*linq查询方法2学习测试 2.获取对象,获取第一个,最后一个 FirstOrDefault() ,获取第一个没有返回 null,不报错LastOrDefault()*///打印Console.WriteLine("***********获取数据库学生表中的语文成绩****************");Console.WriteLine(variable.ChineseScores);Console.WriteLine("***********获取数据库学生表中的数学成绩****************");Console.WriteLine(variable.MathScores);Console.WriteLine("***********获取数据库学生表中的学生生日****************");Console.WriteLine(variable.Birthday);}}
}

  

 打印效果

学生类

 

using System;
using System.Collections.Generic;#nullable disablenamespace ConsoleLinq.Models2
{//根据数据库生成的学生类。 类里面是字段,属性,一般程序中需要给属性赋值的,这里的赋值操作已经在数据库中实现了。所以,不需要赋值/*字段 属性,不需要另外赋值。在这里只需要调用就可以了。 */public partial class Student1{public int Id { get; set; }public string Name { get; set; }public DateTime? Birthday { get; set; }// 1 这个字段允许为空。模型生成的语法,就自动加问号了。可以输入不同的数据类型,然后去生成这个类//就可以查看,对应的这里语法正确格式了。 可以多加数据,然后根据模型学习这里的语法写入。 public int ChineseScores { get; set; }public int MathScores { get; set; }}
}

数据库上下文类

  

using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;#nullable disablenamespace ConsoleLinq.Models2
{public partial class Test3Context : DbContext{public Test3Context(){}public Test3Context(DbContextOptions options): base(options){}// 这是学生表。涉及到了get set访问器知识点。 get是读取数据,set是设置数据。 public virtual DbSet Student1s { get; set; }protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){if (!optionsBuilder.IsConfigured){
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.optionsBuilder.UseSqlServer("Server=.;database=Test3;Trusted_Connection=True;");}}protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.HasAnnotation("Relational:Collation", "Chinese_PRC_CI_AS");modelBuilder.Entity(entity =>{entity.ToTable("Student1");entity.Property(e => e.Id).HasColumnName("ID");entity.Property(e => e.Birthday).HasColumnType("datetime");entity.Property(e => e.Name).IsRequired().HasMaxLength(50);});OnModelCreatingPartial(modelBuilder);}partial void OnModelCreatingPartial(ModelBuilder modelBuilder);}
}


推荐阅读
author-avatar
张光和尚山秀珍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有