2016-11-03 4 views
0

Ich bin eine Liste von Objekten wie diese bekommen:Erhalten Elemente eines IEnumerable

IEnumerable personeller = (IEnumerable)sicil_model.OlayForm_Personel(); 

ich in ihm wie dieses

foreach (var personel in personeller) 
{ 
//can't do anything... 
} 

bin Looping ich in personeller bin Looping und ich kann alle Elemente sehen wie dieses

personeller[0] | { Id = 5, Kimlik = "Koray Durudoğan", EMail = "[email protected]", DepartmanAdi = "Yazilim", PozisyonAdi = "Yazilim Geliştirme" } 

personeller[1] | { Id = 6, Kimlik = "Hasan Pınar", EMail = "[email protected]", DepartmanAdi = "Yazilim", PozisyonAdi = "Yazilim Geliştirme" } 
    . 
    . 
    . 

Und geht so .. Die Sache ist, ich kann nicht auf Elemente von Objekten zugreifen. Zum Beispiel, wie bekomme ich ID von Personeller [0] oder Kimlik von Personeller [1]?

machte ich eine Klasse wie diese

public class Personel_Form 
{ 
    public int Id { get; set; } 
    public string Kimlik { get; set; } 
    public string EMail { get; set; } 
    public string DepartmanAdi { get; set; } 
    public string PozisyonAdi { get; set; } 
} 

aber ich konnte nicht in meiner foreach-Schleife zu dieser Klasse, konvertieren ‚Personal‘ verwalten.

Schließlich ist die Methode, das die Liste dreht:

public object OlayForm_Personel() 
    { 
     return (from p in Entity.GetEntity().Sicil 
          select new 
          { 
          Id = p.Id, 
          Kimlik = p.Isim + " " + p.Soyad, 
          EMail = p.EMail, 
          DepartmanAdi = p.Departman.DepartmanAdi, 
          PozisyonAdi = p.Pozisyon1.PozisyonAdi 
          }).ToList(); 
    } 
+0

Was ist der Rückgabetyp von OlayForm_Personel? – Dom84

+0

Sie können auf einen IEnumerable-Index zugreifen, indem Sie 'ElementAt()' verwenden. – Pikoh

+0

Was ist der ursprüngliche Rückkehrtyp von 'OlayForm_Personel'? Abhängig davon, was Sie tatsächlich bekommen, können Sie 'verwenden.Cast () 'oder einfach' .ToList() ' –

Antwort

5

Von Ihrem Satz ich in personellem bin Looping und ich kann alle Elemente wie diese und die gegebenen Beispieldaten I ableiten, dass die Sammlung, die von der Funktion zurückgegeben wird, speichert Artikel des Typs Personel_Form.

zwei Optionen:

  1. Du es in die nicht genetische IEnumerable Gießen, der die Artikel als object s hält. Sie können es auf den richtigen Typ umgewandelt:

    IEnumerable personeller = (IEnumerable)sicil_model.OlayForm_Personel(); 
    
    foreach (var personel in personeller) 
    { 
        var personalForm = (Personel_Form)personel; 
        // personalForm.Kimlik 
    } 
    
  2. Aber ein besserer Ansatz ist: Statt die nicht generische IEnumerable der Verwendung verwenden, um die generische IEnumerable<T>:

    IEnumerable<Personel_Form> personeller = sicil_model.OlayForm_Personel(); 
    

Was Ihre letzten Fehler (von Kommentaren) angeht, so liegt das daran, dass Ihre Funktion einen anonymen Typ und nicht die Personel_Form ty zurückgibt pe. Stattdessen, wenn ein anonymes Objekt instanziieren instanziiert eine Personel_Form:

public IEnumerable<Personel_Form> OlayForm_Personel() 
{ 
    return (from p in Entity.GetEntity().Sicil 
      select new Personel_Form 
      { 
      Id = p.Id, 
      Kimlik = p.Isim + " " + p.Soyad, 
      EMail = p.EMail, 
      DepartmanAdi = p.Departman.DepartmanAdi, 
      PozisyonAdi = p.Pozisyon1.PozisyonAdi 
      }).ToList(); 
} 
+0

Downvoter bitte erklären .. –

+0

Sie können das Ergebnis von' OlayFrom_Personal' nicht werfen, ohne zu wissen, was es tatsächlich zurückgibt. Edit: Oh, Entschuldigung, das war die andere Antwort, deine muss fast zur selben Zeit aufgetaucht sein. –

+1

@ManfreedRadlwimmer - aus den Beispieldaten in der Frage ist klar, dass jedes Element vom Typ von 'Personal_Form' ist –

0

Wenn sein mögliche, können Sie Ihre Methode von

ändern könnten
public object OlayForm_Personel() 
    { 
     return (from p in Entity.GetEntity().Sicil 
          select new 
          { 
          Id = p.Id, 
          Kimlik = p.Isim + " " + p.Soyad, 
          EMail = p.EMail, 
          DepartmanAdi = p.Departman.DepartmanAdi, 
          PozisyonAdi = p.Pozisyon1.PozisyonAdi 
          }).ToList(); 
    } 

zu

public IEnumerable<Personel_Form> OlayForm_Personel() 
    { 
     return (from p in Entity.GetEntity().Sicil 
          select new Personel_Form 
          { 
          Id = p.Id, 
          Kimlik = p.Isim + " " + p.Soyad, 
          EMail = p.EMail, 
          DepartmanAdi = p.Departman.DepartmanAdi, 
          PozisyonAdi = p.Pozisyon1.PozisyonAdi 
          }).ToList(); 
    } 

dann könnten Sie Ihren raubend Code ändern zu diese

var personeller = sicil_model.OlayForm_Personel(); 

foreach (var personel in personeller) 
{ 
    // personel.Kimlik 
} 
Verwandte Themen