我有2个object
数组。第一个对象数组具有我想要复制到其他数组的属性。
第一个对象数组
HotelRoomResponse[] hr=new HotelRoomResponse[100];
第二个对象数组
RateInfos[] rt = new RateInfos[100];
现在我要做的是复制第一个数组的属性,如
rt=hr[].RateInfo;
但它给出了错误。什么是正确的方法????
答案 0 :(得分:6)
你不能像这样投射一个数组。您实际上必须循环 - 尽管您不需要在自己的代码中手动执行此操作。 LINQ使它非常简单,例如:
RateInfos[] rt = hr.Select(x => x.RateInfo).ToArray();
或者您可以使用Array.ConvertAll
:
RateInfos[] rt = Array.ConvertAll(hr, x => x.RateInfo);
在这两种情况下,某处仍然存在循环 - 它不在您的代码中。
如果你是C#的新手并且不了解LINQ,lambda表达式,委托等,那么你可以自己编写代码:
RateInfos[] rt = new RateInfos[hr.Length];
for (int i = 0; i < rt.Length; i++)
{
rt[i] = hr[i].RateInfo;
}
所有这三个都会达到相同的效果。
ToArray()
更改为ToList()
以获取List<RateInfos>
而不是数组等。ConvertAll
有类似的List<T>
方法。答案 1 :(得分:5)
RateInfos[] rt = hr.Select(item => item.RateInfo).ToArray();
答案 2 :(得分:2)
使用LINQ:
RateInfos[] rt = hr.Select(x => x.RateInfo).ToArray();