我有三个相同类型的数组,每个数组的长度都相同,我需要根据它们共享的属性将它们合并为一个。 示例:
课程:
public class X
{
public DateTime Epoch { get; set; }
public double Value { get; set; }
};
Public class Body
{
public X[] Weight {get; set;}
public X[] Height {get; set;}
public X[] ShoeSize {get; set;}
};
所有这些数组都具有相同的长度,并且每个元素的属性“Epoch”都相同且顺序相同(所以 Weight[0].Epoch == Height[0].Epoch == ShoeSize[0].Epoch
... Weight[1].Epoch == Height[1].Epoch
等等)
我需要有一组具有合并属性的对象,如下所示:
resultArray[n] = {
Epoch: Weight[n]/Height[n]/ShoeSize[n].Epoch
Height: Height[n].Value
Weight: Weight[n].Value
ShoeSize: ShoeSize[n].Value
}
我怎样才能做到这一点?我一直在尝试使用 Dictionary
迭代数组,但我卡住了。
提前致谢!
答案 0 :(得分:0)
这就是你的意思吗?因为我很难正确理解它。
var results =
from height in body.Height
from weight in body.Weight
from shoeSize in body.ShoeSize
select new
{
Epoch = height.Epoch,
Height = height.Value,
Weight = weight.Value,
ShoeSize = shoeSize.Value
};
答案 1 :(得分:0)
您可以使用 LINQ Zip
函数通过索引将数组连接在一起:
var result = Body.Weight
.Zip(Body.Height, (w, h) => (w, h))
.Zip(Body.ShoeSize, (wh, s) =>
(weight: wh.w,
height: wh.h,
shoeSize: s,
epoch: wh.w/wh.h/s.Epoch))
.ToArray();