2016-11-03 131 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 
}