合并具有相同属性和相同长度的不同对象数组

时间:2021-01-28 17:58:45

标签: c# arrays .net

我有三个相同类型的数组,每个数组的长度都相同,我需要根据它们共享的属性将它们合并为一个。 示例:

课程:

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 迭代数组,但我卡住了。

提前致谢!

2 个答案:

答案 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();
相关问题