获取IEnumerable的元素

Kor*_*gan 0 c# ienumerable

我得到一个像这样的对象列表:

IEnumerable personeller = (IEnumerable)sicil_model.OlayForm_Personel();
Run Code Online (Sandbox Code Playgroud)

我像这样在里面循环

foreach (var personel in personeller)
{
 //can't do anything...
}
Run Code Online (Sandbox Code Playgroud)

我在里面循环personeller,我可以看到这样的所有元素

personeller[0] | { Id = 5, Kimlik = "Koray Durudo?an", EMail = "koray@outlook.com", DepartmanAdi = "Yazilim", PozisyonAdi = "Yazilim Geli?tirme" }

personeller[1] | { Id = 6, Kimlik = "Hasan P?nar", EMail = "hasan@dincerelektronik.com.tr", DepartmanAdi = "Yazilim", PozisyonAdi = "Yazilim Geli?tirme" }
    .
    .
    .
Run Code Online (Sandbox Code Playgroud)

就像这样..问题是,我无法访问对象的元素.例如,我如何获得personeller [0]或者personeller [1]的人力资源?

我做了这样一堂课

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; }
}
Run Code Online (Sandbox Code Playgroud)

但我无法在我的foreach循环中将'personel'转换为此类.

最后,这是转换列表的方法:

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();
    }
Run Code Online (Sandbox Code Playgroud)

Gil*_*een 5

从你的句子我循环在personeller里面,我可以看到所有这样的元素和给定的样本数据我推断出函数返回的集合存储了该Personel_Form类型的项目.

两种选择:

  1. 你把它投入到非遗传物质中IEnumerable,将物品保存为objects.你可以把它强制转换为正确的类型:

    IEnumerable personeller = (IEnumerable)sicil_model.OlayForm_Personel();
    
    foreach (var personel in personeller)
    {
        var personalForm = (Personel_Form)personel;
        // personalForm.Kimlik
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 但更好的方法是:不使用非泛型IEnumerable使用泛型IEnumerable<T>:

    IEnumerable<Personel_Form> personeller = sicil_model.OlayForm_Personel();
    
    Run Code Online (Sandbox Code Playgroud)

至于你的最新错误(来自评论),这是因为你的函数返回一个匿名类型而不是Personel_Form类型.相反,如果实例化匿名对象实例化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();
}
Run Code Online (Sandbox Code Playgroud)