C# 如何在foreach外部初始化var
我想在foreach循环之外初始化var 这是我的密码:C# 如何在foreach外部初始化var,c#,list,initialization,var,C#,List,Initialization,Var,我想在foreach循环之外初始化var 这是我的密码: public List<Course> GetCourse() { IList<Semester> semesters = Semester.Get(); foreach (Semester sm in semesters) { IList<CourseInstance> courseInstances = Co
public List<Course> GetCourse()
{
IList<Semester> semesters = Semester.Get();
foreach (Semester sm in semesters)
{
IList<CourseInstance> courseInstances = CourseInstance.Get(sm[0].SemesterId);
var courseInfos = from c in courseInstances
select new Course { Code = c.Course.Code, Name = c.Course.Name };
}
return courseInfos.ToList();
}
public List GetCourse()
{
IList学期=学期。获取();
foreach(学期中的sm)
{
IList CourseInstance=CourseInstance.Get(sm[0].SemesterId);
var courseinfo=来自courseInstances中的c
选择新课程{Code=c.Course.Code,Name=c.Course.Name};
}
return courseinfo.ToList();
}
如何在foreach循环外初始化CourseInfo?我尝试用null初始化给我错误 var根据初始化时使用的值推断类型,因此使用null初始化永远不会起作用。其他一切都会 我相信你想要的Linq声明是
var courses = semesters
.SelectMany( s => CourseInstance.Get(s.SemesterId)
.Select( c => new Course ( Code = c.Course.Code, Name = c.Course.Name ) )
.ToList();
答案是:
IEnumerable<Course> courseInfos = null;
foreach (Semester sm in semesters)
{
IList<CourseInstance> courseInstances = CourseInstance.Get(semesters[0].SemesterId);
courseInfos = from c in courseInstances
select new Course { Code = c.Course.Code, Name = c.Course.Name };
}
return courseInfos.ToList();
IEnumerable CourseInfo=null;
foreach(学期中的sm)
{
IList courseInstances=CourseInstance.Get(学期[0].SemesterId);
CourseInfo=来自courseInstances中的c
选择新课程{Code=c.Course.Code,Name=c.Course.Name};
}
return courseinfo.ToList();
但是,除了
foreach
的最后一次迭代之外,您将放弃所有内容。这就是你想要做的吗?为什么不在第一学期初始化courseInfo的第一个实例,然后在每个学期迭代,有没有理由在第一学期之前初始化courseInfo?编辑:
如果你想将SemesterName映射到课程列表,我建议你使用字典
semesters.ToDictionary(semester => semester.Name, semester =>
semesters.SelectMany(sid =>
CourseInstance.Get(sid.SemesterId))
.Select(c => new Course
{Code = c.Course.Code, Name = c.Course.Name}).ToList())
这将创建一个
字典可能会有帮助。在每次迭代中收集课程信息
public List<Course> GetCourse()
{
IList<Semester> semesters = Semester.Get();
List<Course> courseInfos = new List<Course>();
foreach (Semester sm in semesters)
{
IList<CourseInstance> courseInstances = CourseInstance.Get(sm.SemesterId);
IEnumerable<Course> result = from c in courseInstances
select new Course { Code = c.Course.Code , Name = c.Course.Name };
courseInfos.AddRange(result);
}
return courseInfos;
}
public List GetCourse()
{
IList学期=学期。获取();
List CourseInfo=新列表();
foreach(学期中的sm)
{
IList CourseInstance=CourseInstance.Get(sm.SemesterId);
IEnumerable结果=课程中的c
选择新课程{Code=c.Course.Code,Name=c.Course.Name};
课程信息添加范围(结果);
}
返回课程信息;
}
你想用这些代码实现什么?你没有在循环中使用sm
-为什么?这看起来像是学校作业。我的代码出错了。错误:无法使用[]将索引应用于代码类型为“Serm”的表达式,如果var课程在循环中,我如何循环整个学期?您不需要[0],您希望每个学期循环,不只是第一个问题。我不明白你的第二个问题如果我想输出课程和学期实体,回报类型是什么?你是什么意思?你的意思是把每门课程都映射到它的一个学期吗?我有一个学期->课程一对多的关系。例如,我想返回courseName和SemesterName。我的返回类型是列表。重新运行CourseName和SemesterName的返回类型是什么?如果您想要将学期名称映射到课程列表的一对多关系,我建议使用字典。看上面。哇。。。非常感谢。真的很有帮助。
.SelectMany(sid => CourseInstance.Get(sid.SemesterId))
.Select(c => new Course { Code = c.Course.Code, Name = c.Course.Name })
public List<Course> GetCourse()
{
IList<Semester> semesters = Semester.Get();
List<Course> courseInfos = new List<Course>();
foreach (Semester sm in semesters)
{
IList<CourseInstance> courseInstances = CourseInstance.Get(sm.SemesterId);
IEnumerable<Course> result = from c in courseInstances
select new Course { Code = c.Course.Code , Name = c.Course.Name };
courseInfos.AddRange(result);
}
return courseInfos;
}