【问题标题】:problem with linq (C#)linq (C#) 的问题
【发布时间】:2010-12-19 05:06:36
【问题描述】:
 var pom= from k in dataContext.student_gods
                            where k.skgod==System.Convert.ToString(2002/03)
                            select k;
            foreach(var i in pom){
            var predmeti = from m in dataContext.student1s
                           where m.id_stud ==System.Convert.ToString(i.id_stud)

                           select m;


            }
          return View(predmeti);

这是建议后的代码。我有一个错误:名称 predmeti 在当前上下文中不存在。如果在 foreach 循环之前声明 var predmeti 我不知道如何初始化

【问题讨论】:

    标签: asp.net asp.net-mvc linq


    【解决方案1】:

    return 位于foreach 循环的中间。我不确定上下文是什么,但您可能想要yield return 而不是使用整个集合构建视图。

    在这种情况下,您将在您正在迭代的集合中的第一项之后退出该方法。

    【讨论】:

      【解决方案2】:

      是因为你在foreach循环中返回函数吗?

      foreach(var i in pom){
                  var predmeti = from m in dataContext.student1s
                                 where m.id_stud ==System.Convert.ToString(i.id)
      
                                 select m;
      
                  return View(predmeti);
      }
      

      这意味着函数将在第一个i处退出。

      【讨论】:

        【解决方案3】:

        这行代码对我来说真的很奇怪:

        where k.skgod==System.Convert.ToString(2002/03);
        

        这意味着您将获得 k.skgod = 667 的所有记录。这是您的意图吗?

        不过,正如其他人已经提到的那样; foreach 中的 return 将有效地防止代码返回集合中第一个对象以外的任何内容。

        【讨论】:

        • 这意味着我将从 2002/03 年获得所有学生
        • 那么,2002/03 学年的所有学生都有skgod = 667
        【解决方案4】:

        我认为您过于复杂了,并且冒着臭名昭著的foreach/capture 问题的风险(因为 LINQ 使用延迟执行)。也许只是:

        var pom= from k in dataContext.student_gods
                 where k.skgod==System.Convert.ToString(2002/03)
                 select k.id_stud;
        var list = pom.ToList();
        var predmeti = from m in dataContext.student1s
                       where list.Contains(m.id_stud)
                       select m;
        return View(predmeti);
        

        【讨论】:

        • 那么,列表中有数据吗?由于我们无法重现您的设置,您将不得不帮助我们一点......
        • 我如何检查列表是否为空?我认为问题出在列表中
        • 我创建了视图或我做什么
        猜你喜欢
        • 1970-01-01
        • 2011-07-07
        • 2011-03-02
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多