0

我需要你的帮助。我试图在项目的不同部分重用这种方法,但我喜欢让它通用。有任何想法吗?

    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 类型,我想将它转换为其中一个实体的列表

我是说,

有一种从数据库加载信息并将其收集到列表中的现有方法,但 AssociationEntity 由 2 个实体组成

Entity1(ID, Name)
Entity2(ID, Name)
AssociationEntity (Entity1, Entity2)

List<AssociationEntity> 

所以如果我想从 Entity1 访问 ID,我会这样做

List[0].Entity1.ID

但想象一下,我想要一个Entity1的直接列表。这就是为什么我制作了一个 Method1 来执行循环并手动执行它,但是如果有一个带有 linq 或集合方法的函数,那就太棒了。如果不是,正如我在开始时所说,将 Method1 设为通用。

提前致谢。

4

3 回答 3

1

您可以使用 LINQ 将其缩短很多:

public static List<Entity1> Method1(List<AssociationEntity> searchlist)
{
    return searchlist.Select(x => new Entity1() { entity.ID = x.ID, entity.NAME = x.NAME }).ToList();
}
于 2013-07-09T20:33:06.700 回答
1

要使用 LINQ,请执行以下操作:

List<Entity1> Ent1List = searchlist.Select(item => item.Entity1).ToList();
于 2013-07-09T20:33:48.190 回答
0

您甚至可以根据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();
于 2013-07-09T20:38:37.453 回答