我有一个名为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()
答案 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();