1.数据库原型(Students表中的ID和Scores表中的StudentID是对应的)

2.实现效果:查询出每个学生各个科目的成绩(用的是MVC学习笔记(三)—用EF向数据库中添加数据的架构)

C#代码

  1. public ActionResult Index()
  2. {
  3. try
  4. {
  5. EFContextDB db = new EFContextDB();
  6. List<StudentScoreView> scoreList = new List<StudentScoreView>();
  7. scoreList = (from s in db.Students
  8. join
  9. c in db.Scores on s.ID equals c.StudentID
  10. select new StudentScoreView
  11. {
  12. ID = s.ID,
  13. Name = s.Name,
  14. Subject = c.Subject,
  15. Score = c.StudentScore,
  16. School = s.School
  17. }).ToList();
  18. return Json(scoreList, JsonRequestBehavior.AllowGet);
  19. }
  20. catch(Exception ex)
  21. {
  22. return Json("err", JsonRequestBehavior.AllowGet);
  23. }
  24. }

加了一个显示类studentScoreView

  1. public class StudentScoreView
  2. {
  3. /// <summary>
  4. /// 主键
  5. /// </summary>
  6. public Guid ID { get; set; }
  7. /// <summary>
  8. /// 姓名
  9. /// </summary>
  10. public string Name { get; set; }
  11. /// <summary>
  12. /// 学校
  13. /// </summary>
  14. public string School { get; set; }
  15.  
  16. /// <summary>
  17. /// 分数
  18. /// </summary>
  19. public int Score { get; set; }
  20.  
  21. /// <summary>
  22. /// 科目
  23. /// </summary>
  24. public string Subject { get; set; }
  25. }

3.最后返回json结果

  1. [{
  2. "ID": "5eaaff20-f806-4116-a387-39b44c4c76e0",
  3. "Name": "李四",
  4. "School": "厦门大学",
  5. "Score": ,
  6. "Subject": "语文"
  7. }, {
  8. "ID": "5eaaff20-f806-4116-a387-39b44c4c76e0",
  9. "Name": "李四",
  10. "School": "厦门大学",
  11. "Score": ,
  12. "Subject": "数学"
  13. }, {
  14. "ID": "5eaaff20-f806-4116-a387-39b44c4c76e0",
  15. "Name": "李四",
  16. "School": "厦门大学",
  17. "Score": ,
  18. "Subject": "英语"
  19. }, {
  20. "ID": "662bf2f7-3680-490c-8ff8-9208e4e5f362",
  21. "Name": "张三",
  22. "School": "北京大学",
  23. "Score": ,
  24. "Subject": "语文"
  25. }, {
  26. "ID": "662bf2f7-3680-490c-8ff8-9208e4e5f362",
  27. "Name": "张三",
  28. "School": "北京大学",
  29. "Score": ,
  30. "Subject": "数学"
  31. }, {
  32. "ID": "662bf2f7-3680-490c-8ff8-9208e4e5f362",
  33. "Name": "张三",
  34. "School": "北京大学",
  35. "Score": ,
  36. "Subject": "英语"
  37. }, {
  38. "ID": "5eaaff20-f806-4116-a387-39b44c4c76e0",
  39. "Name": "小明",
  40. "School": "中山大学",
  41. "Score": ,
  42. "Subject": "语文"
  43. }, {
  44. "ID": "4321592e-863f-411a-b044-9478952c29d1",
  45. "Name": "小明",
  46. "School": "中山大学",
  47. "Score": ,
  48. "Subject": "数学"
  49. }, {
  50. "ID": "4321592e-863f-411a-b044-9478952c29d1",
  51. "Name": "小明",
  52. "School": "中山大学",
  53. "Score": ,
  54. "Subject": "英语"
  55. }]

linq中多条件的写法 用&&来连接

4.在实际过程中可能会遇到格式化字符串等等,按照下面方式(加上AsEnumerable())就可以了。

  1. public ActionResult Index()
  2. {
  3. try
  4. {
  5. EFContextDB db = new EFContextDB();
  6. List<StudentScoreView> scoreList = new List<StudentScoreView>();
  7. scoreList = (from s in db.Students.AsEnumerable()
  8. join
  9. c in db.Scores.AsEnumerable() on s.ID equals c.StudentID
  10. select new StudentScoreView
  11. {
  12. ID = s.ID,
  13. Name = s.Name,
  14. Subject = c.Subject,
  15. Score = c.StudentScore,
  16. School = s.School,
  17. ApplyTime = i.CreateTime.ToString("yyyy-MM-dd HH:mm:ss")
  18. }).ToList();
  19. return Json(scoreList, JsonRequestBehavior.AllowGet);
  20. }
  21. catch(Exception ex)
  22. {
  23. return Json("err", JsonRequestBehavior.AllowGet);
  24. }
  25. }

小插曲:中间在编译的过程中,遇到了“未能找到查询的实现”,解决方法是引用命名空间:using System.Linq

写在后面的话:不积跬步无以至千里,我喜欢用文字记录下自己学习的过程,虽然每一篇都是小知识点,每一篇都很简单,但我相信量变会引起质变,加油!

MVC学习笔记(四)---使用linq多表联查(SQL)的更多相关文章

  1. C# LINQ学习笔记四:LINQ to OBJECT之操作文件目录

    本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5816051.html,记录一下学习过程以备后续查用. 许多文件系统操作实质上是查询,因此非常适合使用LINQ方 ...

  2. Linq学习笔记四之linq to sql 的基本操作

    首先需要在项目中新增一个 linq  to sql 的服务 新增项,数据,LINQ TO sql 类的这个方法 第二步需要一个model类,用作映射 [Table] public class S_ZD ...

  3. C#学习笔记四(LINQ,错误和异常,异步编程,反射元数据和动态编程)

    LINQ 1.使用类似的数据库语言来操作集合? 错误和异常 异步编程 1.异步和线程的区别: 多线程和异步操作两者都可以达到避免调用线程阻塞的目的.但是,多线程和异步操作还是有一些区别的.而这些区别造 ...

  4. .NET MVC 学习笔记(四)— 基于Bootstarp自定义弹出框

    .NET MVC 学习笔记(四)—— 基于Bootstarp自定义弹出框 转载自:https://www.cnblogs.com/nele/p/5327380.html (function ($) { ...

  5. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  6. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  7. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  8. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

  9. .NET MVC 学习笔记(五)— Data Validation

    .NET MVC 学习笔记(五)—— Data Validation 在实际应用中,我们需要对数据进行增查改删业务,在添加和修改过程中,无论你编写什么样的网页程序,都需要对用户的数据进行验证,以确数据 ...

随机推荐

  1. Redis简介及其安装

    1.Redis NoSQL (Not noly SQL)不仅仅是SQL 属于非关系型数据库:Redis就属于非关系型数据库 传统的Mysql ,oracle ,sql server 等 都是关系型数据 ...

  2. ruby-on-rails-BUG

    Ruby on Rails errors: (新手期) rails 自动化部署教程 Q1: rvm 无法使用 $ rvm use 1.9.3 --default RVM is not a functi ...

  3. Java Thread dump 日志分析

    jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable 等待资源,Waiting on conditio ...

  4. spring的multipartResolver和java后端获取的MultipartHttpServletRequest方法对比

    这两天在用spring进行上传上遇到问题,今天进行了问题的排查,这个过程也增加了我看spring源码的兴趣!还是很有收获的! 首先先给A组提供了上传接口,并没有在spring的配置文件进行multip ...

  5. SNF快速开发平台2019-用户安全控制-权限管理模型实践-权限都在这里

    1.1    是否保存密码 勾选记住密码后,再次开启程序用户密码不需要再次输入,直接显示在密码输入框内,方便快捷. 图 4.1‑1 记住密码的登录页面框 1.2    是否自动登录 勾选自动登录后,再 ...

  6. python开源项目聚合推荐【1】

    ******************************************************* 01项目名:unimatrix 功能介绍:Python模拟“黑客帝国”影片中的终端动画脚 ...

  7. iOS - 浮点数去掉小数点之后的0,以0.5小数递增函数

    NSMutableArray *arrNumber = [NSMutableArray array]; float a = -0.5; ) { a+=0.5; NSString *str = [sel ...

  8. dubbo如何解决循环依赖的问题

    在分布式项目中,A调用B,  B再调用A,或者A调B,B调用C,C再调用A,形成一个环路时,就会出现循环依赖的问题, 当启动A服务时,需要B服务暴露的接口,找不到就会抛异常,B服务启动时,需要同样需要 ...

  9. SpringBoot之@EnableAutoConfiguration注解

    源地址:https://blog.csdn.net/zxc123e/article/details/80222967 虽然定义使用了多个Annotation进行了原信息标注,但实际上重要的只有三个An ...

  10. django:删除表后怎么重新数据迁移生成表

    1.将对应app下的migrations文件夹下面的除了__init__.py文件外全部删除 2.delete from django_migrations where app='app_name' ...