使用现有列表创建对象列表

时间:2013-10-16 22:47:11

标签: c#

我有一个名为DataAPIKey的类。我有一个继承自那个的第二个类。

在我的代码中,我有一个List,我想用它来创建一个新类的列表。有没有办法在不使用每个循环的情况下执行此操作?

使用下面的示例,我制作了以下代码,似乎正在做我想要的。

List<DataAPIKey> apiList = db.GetPendingAction("Character");

List<DataCharacter> charList = apiList.Select(k => {
        DataCharacter dc = new DataCharacter(k.apiKeyId, k.keyId, k.verificationCode);
        return dc;
    }).ToList()

1 个答案:

答案 0 :(得分:6)

使用LINQ Select方法。

var newList = oldList.Select(oldItem => new InheritedItem(oldItem)).ToList();

用简单的英语翻译为&#34;从oldList获取每个项目,将每个项目作为函数参数提供给一个函数,该函数将获取该项目并执行一些逻辑以返回不同类型的项目,然后采取所有返回的项目并将它们填充到新的列表中。&#34;

或者,如果您没有构造函数来初始化继承的类,那么您可以提供任何代码块:

var newList = oldList.Select(oldItem =>
{
    var newItem = new InheritedItem();
    newItem.Property = oldItem.Property;
    return newItem;
}).ToList();

或初始化程序:

var newList = oldList.Select(oldItem => new InheritedItem()
{
    Property = oldItem.Property,
    Property2 = oldItem.Property2
}).ToList();