方法,其中有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作为泛型。

提前谢谢。

方法,其中有2个实体作为泛型C#

要使用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();