使用 foreach 循环的 C# List 或 Collection 初始值设定项

C# List or Collection initializer using foreach loop

是否可以在 C# 中执行类似以下操作?

var tigerlist = new List<Tigers>(){ Tail = 10, Teeth = 20 };

var tigers_to_cats_approximation = new List<Cat>()
{    
     foreach (var tiger in tigerlist)
     {                 
           new Cat()
           {
               Tail = tiger.Tail / 2,
               Teeth = tiger.Teeth / 3,
               HousePet = true,
               Owner = new Owner(){ name="Tim" }
           }
     }
}

我正在做一些 XML api,传入的请求对象与需要传出的响应对象类似。如果可能的话,以上内容将非常方便;比自动映射器更重要。

您可以将 Select 子句与 ToList() 一起使用:

var tigers_to_cats_approximation =
    tigerlist
        .Select(tiger => new Cat()
        {
            Tail = tiger.Tail / 2,
            Teeth = tiger.Teeth / 3,
            HousePet = true,
            Owner = new Owner() { name = "Tim" }
        })
        .ToList();