gpt4 book ai didi

c# - 如何将 LINQ 与具有并行数组的类一起使用?

转载 作者:行者123 更新时间:2023-11-30 15:15:36 25 4
gpt4 key购买 nike

我最近开始想在我的代码中利用 LINQ。我正在使用如下所示的 TimeSeries 类:

public struct TimeSeriesFloat
{
public DateTime[] DateTime;
public float[] Value;
}

我希望能够使用 LINQ 对“值”进行排序,并让 DateTime 数组也以保持 DateTime[i] 和 Value[i] 之间 1:1 映射的方式进行排序。

我试图在要开始的类上实现一个 IEnumerator,但我什至无法让它正常工作。所以我退后一步问自己这是否值得做,因为可能无法对一个数组进行排序同时以维护映射的并行方式对另一个数组进行排序。

这可能吗?

编辑:糟糕!我很抱歉。在我的匆忙中,我称之为一个类。这是一个结构。 :)

最佳答案

如评论中所述,我会改为使用包含 DateTime 和 float 的 TimeSeries 类:

public struct TimeSeries
{
public DateTime DateTime;
public float Value;
}

然后您将拥有这些集合(无论是数组、列表还是任何 IEnumerable),您可以对其执行所有类型的 Linq 操作。 (这也是您从数据库中获得的数据,看起来像对单行建模,成员作为列)。

如果出于某种原因你必须从你拥有的结构开始,那么你可以像这样将它变成一个 IEnumerable:

var tsf = timeSeriesFloat.DateTime
.Zip(tsf.Value, (f, s) => new {DateTime=f,Value=s});

这将创建一个 IEnumerable。然后你可以说对值进行排序:

var sortedByValue = tsf.OrderBy( x => x.Value);

并且您可以对其执行其他类型的 Linq 操作,如果您愿意,可以使用已排序(过滤,...)的数据创建一个新的 TimeSeriesFloat。

关于c# - 如何将 LINQ 与具有并行数组的类一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com