2016-11-03 44 views
0

元素:找我越來越喜歡這個對象的列表的IEnumerable

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

我循環裏面像這樣

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

我循環內personeller,我可以看到所有元素像這樣

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" } 
    . 
    . 
    . 

而且像這樣..事情是,我無法訪問對象的元素。例如,我如何獲取personeller [1]的Id或者personeller [1]的Kimlik?

我做了一類這樣的

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; } 
} 

但我不能設法「企業人事」轉換到這個班,我的foreach循環中。

最後,這裏是一個把列表的方法:

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

OlayForm_Personel的返回類型是什麼? – Dom84

+0

您可以通過使用ElementAt()來訪問IEnumerable索引 – Pikoh

+0

「OlayForm_Personel」的原始返回類型是什麼?根據你實際得到的東西你可以使用'。Cast ()'或者簡單的'.ToList()' –

回答

5

從你的一句我循環內personeller,我可以看到這樣所有元素,我推斷出給定的樣本數據由功能返回的集合存儲Personel_Form類型的項目。

兩個選項:

  1. 你是鑄造成非遺傳IEnumerable持有的 項目爲object秒。你可以將它轉換爲正確的類型:

    IEnumerable personeller = (IEnumerable)sicil_model.OlayForm_Personel(); 
    
    foreach (var personel in personeller) 
    { 
        var personalForm = (Personel_Form)personel; 
        // personalForm.Kimlik 
    } 
    
  2. 但更好的方法是:而不是使用非通用IEnumerable使用通用IEnumerable<T>

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

至於你的最新錯誤(來自評論),這是因爲你的函數返回一個匿名類型而不是Personel_Form ty PE。相反,如果實例化一個匿名對象實例化一個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請解釋.. –

+0

您不能在不知道實際返回結果的情況下拋出'OlayFrom_Personal'的結果。編輯:哦,對不起,這是另一個答案,你幾乎必須同時彈出。 –

+1

@ManfredRadlwimmer - 從問題中的示例數據可以清楚地看到,每個項目都是「Personal_Form」的類型 –

0

如果可能的話,你可以在你的方法從

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

改變

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

,那麼你可以在你的消費代碼更改此

var personeller = sicil_model.OlayForm_Personel(); 

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