asp.net mvc 遍历linq to sql 多表联查

两张表: 班级表和学生表: 最终想获得学生的姓名、密码、性别、年龄、住址、爱好、班级名称、班级所学方向

var temp=from a in _db.student

join b in _db.classes

on a.c_id equals b.id

select

new

{

Id=a.id,

Name = a.name,

Pwd = a.pwd,

Sex = a.sex,

Age = a.age,

Address = a.address,

Hobby = a.hobby,

StuName = b.name,

Direction = b.direction

};  使用linq to sql来实现多表联查,问题就出来了,这里是推动类型,前台怎么绑定是个问题 那么是否可以创建一个类,包含这些字段呢?

public class Stu

{

public int Id { get; set; }

public string Name { get; set; }

public string Pwd { get; set; }

public bool? Sex { get; set; }

public int? Age { get; set; }

public string Address { get; set; }

public string Hobby { get; set; }

public string StuName { get; set; }

public string Direction { get; set; }

} 然后在多表联查的时候select new Stu(){} 具体代码:

var temp=from a in _db.student

join b in _db.classes

on a.c_id equals b.id

select

new Stu()

{

Id=a.id,

Name = a.name,

Pwd = a.pwd,

Sex = a.sex,

Age = a.age,

Address = a.address,

Hobby = a.hobby,

StuName = b.name,

Direction = b.direction

};  这样就可以返回一个IQueryable.ElementType{Name="Stu",FullName="项目名称.Models.Stu"} 然后在 ViewData.Model = temp.ToList(); 这样就转换为IEnumerable<COOL.Models.Stu>  在view视图里面加上 @model IEnumerable<COOL.Models.Stu>   @foreach (var item in Model)进行遍历即可 效果: 呈上Controller完整代码:

public class HomeController : Controller

{

readonly StudentDataContext _db=new StudentDataContext();

// GET: /Home/

public ActionResult Index()

{

var temp=from a in _db.student

join b in _db.classes

on a.c_id equals b.id

select

new Stu()

{

Id=a.id,

Name = a.name,

Pwd = a.pwd,

Sex = a.sex,

Age = a.age,

Address = a.address,

Hobby = a.hobby,

StuName = b.name,

Direction = b.direction

};

ViewData.Model = temp.ToList();

return View();

}

}

view 视图的完整代码:

@model IEnumerable<COOL.Models.Stu>

@using System.Collections

@{

Layout = null;

}

<!DOCTYPE html>

<html>

<head>

<title>Index</title>

</head>

<body>

<p>

@Html.ActionLink("Create New", "Create")

</p>

<table border="1" cellpadding="0" cellspacing="0">

<tr>

<th></th>

<th>

姓名

</th>

<th>

密码

</th>

<th>

性别

</th>

<th>

年龄

</th>

<th>

住址

</th>

<th>

爱好

</th>

<th>

班级名称

</th>

<th>

专业方向

</th>

</tr>

@foreach (var item in Model) {

<tr>

<td>

@*              @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |

@Html.ActionLink("Details", "Details", new { id=item.Id }) |

@Html.ActionLink("Delete", "Delete", new { id=item.Id })*@

</td>

<td>

@item.Name

</td>

<td>

@item.Pwd

</td>

<td>

@(item.Sex==true?"男":"女")

</td>

<td>

@item.Age

</td>

<td>

@item.Address

</td>

<td>

@item.Hobby

</td>

<td>

@item.StuName

</td>

<td>

@item.Direction

</td>

</tr>

}

</table>

</body>

</html>

时间: 2024-10-11 12:54:54

asp.net mvc 遍历linq to sql 多表联查的相关文章

ASP.NET MVC遍历ModelState的错误信息

在ASP.NET MVC中,ModelState中包含了验证失败的错误信息,具体被存储在ModelState.Values[i].Errors[j].ErrorMessage属性中.当然,通过打断点,单步调试可以查看具体的验证失败错误信息,但有时候希望把ModelState中的验证失败信息遍历显示出来. ModelState类型是ModelStateDictionary,ModelStateDictionary是一个字典集合,键是模型的各个属性,值是模型各个属性对应的ModelState. Mo

ASP.NET MVC中使用Session来保持表单的状态

本篇实践在ASP.NET MVC 4下使用Session来保持表单的状态. 本篇的源码在这里: https://github.com/darrenji/KeepFormStateUsingSession 如上,输入俱乐部名称,点击"添加球员",输入球员名称.我们希望,点击"到别的地方转转"跳转到另外一个视图页,当再次返回的时候能保持表单的状态. 点击"到别的地方转转"跳转到另外一个视图页如下: 再次返回,表单的状态被保持了: 点击"提交

asp.net MVC + EF , Linq的基本用法

public ActionResult Index() { NewsEntities news = new NewsEntities(); //select * from NewsInfo #region 排序 var query = from s in news.NewsInfo orderby s.ID descending //ascending select new { id = s.ID, name = s.Name, auter = s.Auter }; //构造属性 foreach

如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之自定义表单开发随笔四

"厂长,上一次我们讲过了工作流的整体规划,今天我要动手做啦!我想先把工作流的自定义表单做出来." "好的,以前我做这方面的东西,我给你设计了一份表结构,你先拿去看看." "厂长,是不是没发完,怎么就一个表?" "我就知道你会这么问,我现在给你解释一下重点字段的含义." 数据表:将表单上的内容保存到哪个表. 关联表的主键:要保存表单数据那张表的主键. 是否需要建表:是否需要把表单中的数据存入到表中,这里的意思是,是将表单上面的栏

SQL多表联查总结

交叉连接:(不常用)返回两个表的笛卡尔乘积(也即全组合排列)中符合查询条件的数据行. 内连接返回连接表中符合连接条件和查询条件的数据行. 左外连接返回符合连接条件和查询条件(即:内连接)的数据行,且还返回左表中不符合连接条件但符合查询条件的数据行. 右外连接返回符合连接条件和查询条件(即:内连接)的数据行,且还返回右表中不符合连接条件但符合查询条件的数据行. 全外连接(不常用,MySQL不支持)返回符合连接条件和查询条件(即:内连接)的数据行,且还返回左表中不符合连接条件但符合查询条件的数据行以

走入asp.net mvc不归路:[6]linq常见用法

asp.net mvc结合linq,先不说性能问题,对于增删查改的操作还是相当方便的.以下我们就来介绍一下linq在asp.net mvc的Controller中的常见用法. 1 首先来看看整个数据表,共有3个表,要访问这个数据库,得有一个代理,这个代理就是edmx文件中继承类DbContext的AllTestEntities 2 实体代理,可以直接在Controller中声明,并且数据库中对应的表,可以无缝对接:使用时,声明一个变量db,然后使用时,要访问相应表或视图,可以直接使用db.Dom

ASP.NET MVC局部验证及相关问题

在上一篇“asp.net mvc常用的数据注解和验证以及entity framework数据映射”话题中,有的博友提到 ‘“同一个实体在3-4个地方会发生修改,每个修改需要验证的方式都不一样,后端就不能写固定验证.” 此博友的言论我是很赞同的,在基于asp.net mvc上,我有对应的策略,并且,你只需几行代码,就解决了所有的事情. 还是举上次的Model,如下: [Table("AdminInfo")] public partial class AdminInfo { [Key] [

ASP.NET MVC 表单的几种提交方式

下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src="/Scripts/jquery-1.7.2.min.js"></script>    <script src="/Scripts/jquery.validate.min.js" type="text/javascript">&l

asp.net mvc常用的数据注解和验证以及entity framework数据映射

终于有时间整理一下asp.net mvc 和 entity framework 方面的素材了. 闲话少说,步入正题: 下面是model层的管理员信息表,也是大伙比较常用到的,看看下面的代码大伙应该不会陌生, 在此Model上我们用到了asp.net mvc的数据注解和验证,entity framework对数据库的映射 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.T