获取IEnumerable的元素

本文关键字:元素 IEnumerable 获取 | 更新日期: 2023-09-27 18:16:12

我得到的对象列表如下:

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

然后是这样的。。问题是,我无法访问对象的元素。例如,如何获取personeller[0]的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循环中,我无法将"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();
    }

获取IEnumerable的元素

的句子中,我在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
    }
    
  2. 但更好的方法是:与其使用非通用IEnumerable,不如使用通用IEnumerable<T>:

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

至于您最近的错误(来自注释(,这是因为您的函数返回的是匿名类型,而不是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();
}

如果可能的话,您可以从更改方法

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
}