C# 使用foreach返回列表

C# 使用foreach返回列表,c#,foreach,json.net,C#,Foreach,Json.net,注意:我在数组列表中获取学生ID,如[0]1、[1]2、[2]3……等等。因此,我想根据ID返回学生详细信息。如果我错了,请纠正我。我认为您正在寻找收益率回报,您可以使用它返回IEnumerable或循环中的IEnumerable 首先,您需要将方法更改为: public string Studentbyteacher(long _id) { using (var context = new DbContext()) { var studentID = (cont

注意:我在数组列表中获取学生ID,如[0]1、[1]2、[2]3……等等。因此,我想根据ID返回学生详细信息。如果我错了,请纠正我。

我认为您正在寻找收益率回报,您可以使用它返回IEnumerable或循环中的IEnumerable

首先,您需要将方法更改为:

public string Studentbyteacher(long _id)
{
    using (var context = new DbContext())
    {
        var studentID = (context.TeacherStudent.Where(x => x.TeacherID == _id).Select(x => x.studentID));
        foreach (var id in studentID)
        {
            var strJSON = JsonConvert.SerializeObject(context.Student.Where(x => x.ID == id).ToList());
            return strJSON;
        }
        return null;
    }
}


最后删除返回strJson

你发布的代码有什么问题?电流输出是多少?预期产量是多少?此问题缺乏详细信息。请编辑您的问题以实际提问您几乎可以简化整个过程以返回JsonConvert.SerializeObjectcontext.TeacherStudent.Wherex=>x.TeacherID==\U id.Selectx=>x.studentID.FirstOrDefault。。但是我假设你的意思是你想要不止一行的返回,每个函数每个代码路径只能返回一次,你在foreach循环中有一个返回。这样做永远不会通过循环的第一次迭代。现在,我只得到1个基于ID的student值,但我想返回基于ID的student列表。例如:[1 student1 0 Address1 2 student2 0 Address2 3 student3 0 Address3 4 student4 0 Address4]
 public IEnumerable<string> Studentbyteacher(long _id)
var strJSON = JsonConvert.SerializeObject(context.Student.Where(x => x.ID == id).ToList());
yield return JsonConvert.SerializeObject(context.Student.Where(x => x.ID == id).FirstOrDefault());
public string Studentbyteacher(long teacherId)
{
    using (var context = new DbContext())
    {
        var students = 
            from teacherStudent in context.TeacherStudent.Where(x => x.TeacherID == teacherId)
            let studentId = teacherStudent.studentID
            let student = context.Student.Where(x => x.ID == studentId).Single()
            select student;

        return JsonConvert.SerializeObject(students);
    }
}