方法,其中有2个实体作为泛型C#
本文关键字:泛型 实体 2个 方法 | 更新日期: 2023-09-27 18:21:47
我需要你的帮助。我试图在项目的不同部分重用这种方法,但我喜欢使其通用。有什么想法吗?
public static List<Entity1> Method1(List<AssociationEntity> searchlist)
{
List<Entity1> list = new List<Entity1>();
Entity1 entity;
foreach (AssociationEntity item in searchlist)
{
entity = new Entity();
entity.ID = item.ID;
entity.NAME = item.NAME;
list.Add(entity);
}
return list;
}
或者有人可以用一种更简单的方式简化它,我的问题是,我有一个类的List类型,它由to个实体组成,我想把它转换成一个实体的列表
有一种现有的方法可以从数据库加载信息并将其收集到列表中,但AssociationEntity由两个实体组成
实体1(ID,名称)
实体2(ID,名称)
关联实体(实体1、实体2)
List<AssociationEntity>
因此,如果我想访问Entity1的ID,我会执行此
List[0].Entity1.ID
但是想象一下,我想要一个Entity1的直接列表。这就是为什么我制作了一个Method1来执行循环并手动执行,但如果有一个带有linq或collection方法的函数,那就太棒了。如果不是,正如我在一开始所说,将Method1作为泛型。
提前谢谢。
要使用LINQ,请执行以下操作:
List<Entity1> Ent1List = searchlist.Select(item => item.Entity1).ToList();
使用LINQ:可以大大缩短
public static List<Entity1> Method1(List<AssociationEntity> searchlist)
{
return searchlist.Select(x => new Entity1() { entity.ID = x.ID, entity.NAME = x.NAME }).ToList();
}
您甚至可以基于Jeffery Khan的解决方案创建一个扩展方法:
public static class AssociationEntityExtensions
{
public static List<Entity1> ToEntityList(this List<AssociationEntity> searchlist)
{
return searchlist.Select(x => new Entity1()
{
entity.ID = x.ID,
entity.NAME = x.NAME
})
.ToList();
}
}
用法:
List<AssociationEntity> mysearchlist = new List<AssociationEntity>();
List<Entity1> myentities = mysearchlist.ToEntityList();