获取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();
}
从的句子中,我在personeller内部循环,我可以看到所有类似的元素和给定的样本数据,我推断函数返回的集合存储Personel_Form
类型的项。
两种选择:
-
你正在将其投射到非基因
IEnumerable
中项目为object
s。您可以将其转换为正确的类型:IEnumerable personeller = (IEnumerable)sicil_model.OlayForm_Personel(); foreach (var personel in personeller) { var personalForm = (Personel_Form)personel; // personalForm.Kimlik }
-
但更好的方法是:与其使用非通用
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
}