2009-11-22 5 views
0
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); 

Ceci est le code après les suggestions. J'ai une erreur: le nom predmeti n'existe pas dans le contexte actuel. Si déclarer var predmeti avant la boucle foreach je ne sais pas comment initialiserproblème avec linq (C#)

Répondre

1

Je pense que vous compliquez la situation et que vous risquez le fameux problème de capture foreach/(puisque LINQ utilise l'exécution différée). Peut-être juste:

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); 
+0

Maintenant, j'ai essayé, mais il ne retourne pas de données de la table – Ognjen

+0

Eh bien, y at-il des données dans la liste? Puisque nous ne pouvons pas reproduire votre configuration, vous allez devoir nous aider un peu ... –

+0

comment je vérifie est vide? Je pense que le problème est dans la liste – Ognjen

3

Le return est au milieu de la boucle foreach. Je ne suis pas sûr de ce que le contexte est mais vous pouvez vouloir yield return au lieu de construire la vue avec toute la collection.

Dans ce cas, vous quittez la méthode après le premier élément de la collection dans lequel vous itérez.

0

Est-ce parce que vous renvoyez la fonction dans la boucle 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); 
} 

Cela signifie que la fonction quittera au premier i.

1

Cette ligne de code me semble vraiment étrange:

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

Cela signifie que vous obtiendrez tous les enregistrements où k.skgod = 667. Est-ce votre intention?

Toujours, comme d'autres l'ont déjà mentionné; le retour dans votre foreach empêchera effectivement le code de renvoyer autre chose que le premier objet de la collection.

+0

Cela signifie que je vais obtenir tous les étudiants de l'année 2002/03 – Ognjen

+0

Ainsi, tous les étudiants de l'année 2002/03 a 'skgod = 667'? –

+0

colonne dans le tableau de données: id_stud prénom nom_famille skgod .... – Ognjen