将foreach转换为linq表达式

时间:2014-05-28 18:01:13

标签: c# .net linq .net-4.5

我有以下代码将myCar对象列表转换为来自第三方Web服务的Car对象数组,以便我可以将汽车传递给第三方Web服务:

var cars = new Car[myCars.Count];
var count = 0;
foreach (var myCar in myCars)
{
   cars[count] = new Car
   {
      Id = myCar.Id,
      Manufacturer = myCar.Manufacturer,
      Model = myCar.Model
   };
   count++;
}
return cars;

请注意,我的myCar对象除了第三方Web服务之外还有许多其他功能,我不能做一些简单的事情,例如:

MyClass[] myArray = list.ToArray();

代码按预期工作但我想知道Linq中是否有一些内容,例如Select表达式可以使这更好并减少代码?

2 个答案:

答案 0 :(得分:10)

var cars = myCars.Select(myCar => new Car
{
    Id = myCar.Id,
    Manufacturer = myCar.Manufacturer,
    Model = myCar.Model
}).ToArray();

答案 1 :(得分:3)

Select linq方法允许您将一个对象转换为另一个对象:

var cars = myCars.Select( c => new Car { id = c.Id, Manufacturer = c.Manufacturer, Model = c.Model } ).ToArray()

我认为会这样做。