foreach 循环中的 foreach 循环
Posted
技术标签:
【中文标题】foreach 循环中的 foreach 循环【英文标题】:Foreach loop in foreach loop 【发布时间】:2021-05-28 21:25:44 【问题描述】:我正在使用 foreach 循环将值插入数据库。我有两个学生在六年级和六个科目的同一班。当我运行它时,它只为所有学生上传一门科目,我想填充所有六年级学生的科目...我的代码在哪里需要迭代?
var source = context.Students.Include("ClassRoom").Where(x => x.ClassRoom.ClassName == searchLookUpEdit4.Text).ToList();
Evaluation ev = new Evaluation();
var source1 = context.Subjects.Include("ClassRoom").Where(x => x.ClassRoom.ClassName == searchLookUpEdit4.Text).ToList();
foreach (var stud in source)
ev.StudentId = stud.Id;
foreach (var sub in source1)
ev.SubjectId = sub.Id;
ev.TermId = Convert.ToInt32(searchLookUpEdit2.EditValue);
ev.ObtainedMarks = 0;
ev.Grades = "";
ev.Remarks = "";
context.Evaluations.Add(ev);
context.SaveChanges();
【问题讨论】:
只是一个提示,你不应该复制粘贴你不懂的代码。上面的代码告诉我你有一些高级的编程知识,下面的部分表明你还没有掌握基本的知识。 我看到一个问题,似乎一个学生当然可以拥有多个科目,但是您的嵌套循环正在重新分配下一个科目,您没有添加另一个科目,您已经结束了- 写上一个。ev.SubjectId
可能需要您添加到某种形式的集合中。
【参考方案1】:
我认为你内部的foreach
循环没有正确编写。纠正大括号位置将解决此问题。
更正的代码:
var source = context.Students.Include("ClassRoom").Where(x =>
x.ClassRoom.ClassName == searchLookUpEdit4.Text).ToList();
Evaluation ev = new Evaluation();
var source1 = context.Subjects.Include("ClassRoom").Where(x => x.ClassRoom.ClassName == searchLookUpEdit4.Text).ToList();
foreach (var stud in source)
ev.StudentId = stud.Id;
foreach (var sub in source1)
ev.SubjectId = sub.Id;
ev.TermId = Convert.ToInt32(searchLookUpEdit2.EditValue);
ev.ObtainedMarks = 0;
ev.Grades = "";
ev.Remarks = "";
context.Evaluations.Add(ev);
context.SaveChanges();
【讨论】:
【参考方案2】:我假设您的意思是您希望每个学生和科目组合进行一次评估。在这种情况下,您应该这样做:
foreach (var stud in source)
foreach (var sub in source1)
var ev = new Evaluation();
ev.StudentId = stud.Id;
ev.SubjectId = sub.Id;
ev.TermId = Convert.ToInt32(searchLookUpEdit2.EditValue);
ev.ObtainedMarks = 0;
ev.Grades = "";
ev.Remarks = "";
context.Evaluations.Add(ev);
context.SaveChanges();
【讨论】:
以上是关于foreach 循环中的 foreach 循环的主要内容,如果未能解决你的问题,请参考以下文章
UIImageView Array ForEach 迭代循环问题