【问题标题】:Return List using foreach使用 foreach 返回列表
【发布时间】:2015-08-12 13:58:14
【问题描述】:
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;
    }
}

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

【问题讨论】:

  • 您发布的代码有什么问题?目前的输出是多少?预期的输出是多少?这个问题缺乏细节。
  • 请将您的问题编辑为实际提出问题
  • 您几乎可以将整个过程简化为 return JsonConvert.SerializeObject(context.TeacherStudent.Where(x => x.TeacherID == _id).Select(x => x.studentID)).FirstOrDefault()); .. 但我假设您的意思是您想要的不止一行
  • 每个代码路径的每个函数只能执行一次返回,在 foreach 循环中有一个返回。这样做永远不会超过循环的第一次迭代。
  • 现在我只能根据他们的 ID 获得 1 个学生值,但我想根据他们的 ID 返回学生列表。喜欢:[1 个学生 1 0 地址 1 2 学生 2 0 地址 2 3 学生 3 0 地址 3 4 学生 4 0 地址 4]

标签: c# foreach json.net


【解决方案1】:
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);
    }
}

【讨论】:

    【解决方案2】:

    我认为您正在寻找可用于在循环中返回 IEnumerable< T >IEnumerable 的 yield return。

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

     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());
    

    最后删除return strJson;

    【讨论】:

      猜你喜欢
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2019-05-08
      • 2015-12-13
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多