c# - 如何在以捷径或可能以新方式为每个创建集合的同时创建一个集合?
问题描述
因此,如果我有一组动物,并且想将一些属性用于新对象,如下所示:
class Animal{
public string Name {get; set;}
public string TypeOfAnimal {get; set;}
public short Weight {get; set;}
public string Color {get; set;}
}
class Zoo{
public string AnimalType {get; set;}
public bool ForAdoption {get; set;}
public decimal ApproximateWeight {get; set;}
}
var listOfAnimals = List<Animal>();
var myAnimalsCollection = GetAllAnimalsFromDB();
foreach (var animalItem in myAnimalsCollection)
{
var zooObject= new Zoo {
Animaltype = animalItem.TypeOfAnimal,
ApproximateWeight = animalItem.Weight,
ForAdoption = false
};
listOfAnimals.Add(zooObject);
}
就像初始化一个集合,然后在创建一个新对象后将它们一一添加。我想知道现在 C# 中是否有一种通用的方法来简化代码?
解决方案
您可以在 c# 中使用 LINQ。我还解决了您给定问题中的一些问题。
class Zoo
{
public string AnimalType { get; set; }
public bool ForAdoption { get; set; }
public decimal ApproximateWeight { get; set; }
}
class Animal
{
public string Name { get; set; }
public string TypeOfAnimal { get; set; }
public short Weight { get; set; }
public string Color { get; set; }
}
class Program
{
static void Main(string[] args)
{
var myAnimalsCollection = GetAllAnimalsFromDB();
var listOfAnimals = (from item in myAnimalsCollection
select new Zoo
{
AnimalType = item.TypeOfAnimal,
ApproximateWeight = item.Weight,
ForAdoption = false
}).ToList();
}
}
推荐阅读
- apache-kafka - kafka-consumer-groups.sh 没有列出 Kafka 消费者组
- c# - 如何更改 Autofac 中具有较长生命周期的对象中的值?
- go - Web 进程在启动 golang 后 60 秒内无法绑定到 $PORT
- authentication - EAP 请求者区分和身份验证
- javascript - 使用 Ajax 在 jsp 页面中显示返回的 Java 对象
- javascript - 更改时替换变量字符串
- .htaccess - .htaccess = 重写 URL
- function - 是否可以使用通用函数在元组中获取元组的第二个元素?
- colors - 如何在 vs 代码中更改字体颜色的特定突出显示
- javascript - 检查新注册的功能