c# - 通用列表/子列表处理

标签 c# generics

假设我们有一个类

class ComplexCls
{
  public int Fld1;
  public string Fld2;
  //could be more fields
}

class Cls
{
  public int SomeField;
}

然后是一些代码

class ComplexClsList: List<ComplexCls>;
ComplexClsList myComplexList;
// fill myComplexList

// same for Cls    
class ClsList : List<Cls>;
ClsList myClsList;

我们想从 myComplexList 填充 myClsList,类似于(伪代码):

foreach Complexitem in myComplexList
{
  Cls ClsItem = new Cls();
  ClsItem.SomeField = ComplexItem.Fld1;
}

执行此操作的代码很简单,将放在 myClsList 的某个方法中。 但是,我想为通用的 ComplexCls 设计尽可能通用的。 请注意,在使用此代码时,确切的 ComplexCls 是已知的,只有算法应该是通用的。
我知道可以使用(直接)反射来完成,但是还有其他解决方案吗? 让我知道问题是否不够清楚。 (可能不是)。 [编辑] 基本上,我需要的是:拥有 myClsList,我需要指定一个数据源 (ComplexClsList) 和该数据源 (Fld1) 中的一个字段,该字段将用于填充我的 SomeField

最佳答案

这只是一个映射,所以使用一些简单的 LINQ:

ClsList myClsList = new ClsList();
myClsList.AddRange(
  myComplexList.Select(Complexitem => new Cls { SomeField = Complexitem.Fld1 })
);

关于c# - 通用列表/子列表处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19577081/

相关文章:

generics - Scala方法,其中第二个参数的类型等于第一个参数的泛型类型的一部分

typescript - 如何在 typescript 中制作通用类型参数?

c# - 在 Entity Framework 中跨多个表进行选择,从而产生通用的 IQueryable?

java - 将 Collection<MyType> 转换为 Collection<Object>

c# - 我如何在 ASP.NET 中加密和解密我的 Cookie

java - Gson,带有泛型的 ClassCastException

c# - 从 Gmail 中获取已读和未读邮件

c# - preg_match 到 .NET 等价物

C# 类自动递增 ID

c# - 使用 asp.net 表单例份验证的用户模拟