在类中展平数组的动态方法?

Tan*_*Tan 1 c# linq arrays dynamic-programming dynamic-arrays

我正在遍历包含双精度数组的对象.名称已更改.想象一下,这是Lab样本的一个对象,我试图获得Sample对象的平面表示.

从:

Sample
{
    public string Name
    public string Type
    ...
    public double[] RawReadings
}
Run Code Online (Sandbox Code Playgroud)

举例来说:

Name,
RawRead1,
RawRead2,
RawRead3,
...
RawReadn
Run Code Online (Sandbox Code Playgroud)

我如何finangle sample.RawReadings给我数组中的所有n项?我不在乎它的名字与否.

编辑为清晰起见:我希望结果列表中的每个项目都具有Name和类中的属性,与RawReads一样多.我希望结果列表中的每个项目都有一个名称和一个数组 - 这将与我所拥有的相同.

示例LinQ:

from sample in Samples
select new
{
    Name = sample.Name,
    sample.RawReadings
}
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

编辑: 我将此提供给第三方API调用,该调用期望"行和列格式".Aspose.Cells ImportCustomObject准确.有可能通过多次调用解决它并手动对齐它们,但这可能很棘手并且容易出错.

Jon*_*eet 6

我希望结果列表中的每个项目都具有Name和RawReads的双倍数量.

你不能使用匿名类型.匿名类型具有在编译时指定的属性名称和类型,而您希望在执行时指定它们.目前尚不清楚为什么要尝试这样做,但最接近的是使用动态类型,你可以使用expando:

public dynamic SampleToDynamic(Sample sample)
{
    IDictionary<string, object> expando = new ExpandoObject();
    expando["Name"] = sample.Name;
    for (int i = 0; i < sample.RawReadings.Length; i++)
    {
        expando["RawRead" + (i + 1)] = sample.RawReadings[i];
    }
    return expando;
}
Run Code Online (Sandbox Code Playgroud)