使用asp.net mvc + linq to sql如何循环输入结果集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用asp.net mvc + linq to sql如何循环输入结果集相关的知识,希望对你有一定的参考价值。
小弟刚刚学习,比如asp里cs里依次循环数据库里的值并传到前台js里是: string sql = "SELECT Top 4 * FROM TB_Honors WHERE (honors_ShowYN = 1) order by honors_ID desc";
DataTable dt = new DataTable();
dt = DBDS.DB(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
pics += dt.Rows[i]["honors_pic"].ToString() + '|'; links += dt.Rows[i]["honors_ID"].ToString() + '|'; texts += dt.Rows[i]["honors_Title"].ToString() + '|';
那请问inq to sql怎么写这个dt.Rows.Count呢?
使用foreach就行了
ASP.NET MVC 4、EF 和 LINQ:为多对多关系创建特定的 LINQ 查询
【中文标题】ASP.NET MVC 4、EF 和 LINQ:为多对多关系创建特定的 LINQ 查询【英文标题】:ASP.NET MVC 4, EF, & LINQ: Creating a specific LINQ query for a many-to-many relationship 【发布时间】:2013-06-20 06:22:04 【问题描述】:在我的应用程序中,我正在尝试编写一个 ListStudents ActionResult,它只显示一个学生列表,其 Clas-s-roomID 等于当前登录教师创建的 Clas-s-roomID 之一。
我相信我需要使用一些 LINQ 查询来获得所需的结果,但我被卡住了,因为当教师实体有一个 ICollection 教室时,我不太知道如何处理它。
我的 TeacherController 中的 ListStudents 和 CreateClas-s-room
public ActionResult ListStudents()
//This gets the current teachers UserProfile as only users with the teacher role have access to this controller
var teacherProfile = db.UserProfiles.Local.SingleOrDefault(u => u.UserName == User.Identity.Name)
?? db.UserProfiles.SingleOrDefault(u => u.UserName == User.Identity.Name);
var teacher = db.Teachers.Find(teacherProfile.UserId);
//Need query where students Clas-s-roomID needs to be one of the current teachers Clas-s-roomID's
return View(students);
public ActionResult CreateClas-s-room(Clas-s-room model)
if (ModelState.IsValid)
try
var userProfile = db.UserProfiles.Local.SingleOrDefault(u => u.UserName == User.Identity.Name)
?? db.UserProfiles.SingleOrDefault(u => u.UserName == User.Identity.Name);
var clas-s-room = new Clas-s-room
Clas-s-roomName = model.Clas-s-roomName,
TeacherID = userProfile.UserId
;
db.Clas-s-rooms.Add(clas-s-room);
db.SaveChanges();
catch (DataException)
ModelState.AddModelError("", "Something went wrong, try again.");
return RedirectToAction("ListClas-s-rooms");
用户、学生、教师和课堂模型
public class User
[Key]
[Editable(false)]
[ForeignKey("UserProfile")]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
public int UserId get; set;
public virtual UserProfile UserProfile get; set;
[Display(Name = "First Name")]
[Required(ErrorMessage = "First name is required.")]
[MaxLength(50)]
public virtual string FirstName get; set;
[Display(Name = "Last Name")]
[Required(ErrorMessage = "Last name is required.")]
[MaxLength(50)]
public virtual string LastName get; set;
学生
public class Student : User
[ForeignKey("Account")]
[Editable(false)]
public virtual int AccountID get; set;
public virtual Account Account get; set;
[Column("Clas-s-roomID")]
[ForeignKey("Clas-s-room")]
public virtual int Clas-s-roomID get; set;
public virtual Clas-s-room Clas-s-room get; set;
老师
public class Teacher : User
public virtual ICollection<Clas-s-room> Clas-s-rooms get; set;
教室
public class Clas-s-room
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public virtual int Clas-s-roomID get; set;
[Display(Name = "Clas-s-room Name")]
[MaxLength(50)]
public virtual string Clas-s-roomName get; set;
public virtual ICollection<Student> Students get; set;
[Column("TeacherID")]
[ForeignKey("Teacher")]
public virtual int TeacherID get; set;
public virtual Teacher Teacher get; set;
感谢您抽出宝贵时间帮我解决这个问题,我对 MVC 很陌生,正在努力学习。
【问题讨论】:
【参考方案1】:分成几行,更容易理解。
var clas-s-rooms = db.Clas-s-rooms.Where(x => x.TeacherID == teacher.Id).Select(x => x.Clas-s-roomID);
var students = db.Students.Where(x => clas-s-rooms.Contains(x.Clas-s-roomID);
【讨论】:
非常感谢,效果很好!我在理解第一个查询在做什么时遇到了一些麻烦。如果你不介意,你能告诉我它到底在做什么吗? 这个查询首先需要的是教室的集合。一旦你有了这些教室,你就可以看到哪些学生属于这些教室。在第一个查询中,我使用 WHERE 子句获取了一个教室集合。从那个集合中,我只关心 Id(这是 SELECT 子句发挥作用的地方)。教室变量实际上只是整数的集合。以上是关于使用asp.net mvc + linq to sql如何循环输入结果集的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET MVC2 项目中使用 LINQ to SQL
asp.net mvc中使用linq to sql查询数据集(IQueryable类型) 怎么用foreach循环去数据集的数据?
在 ASP.NET MVC 中向控制器传递多个参数;此外,在 LINQ-to-SQL 中生成动态查询