首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将LINQ与具有并行数组的类一起使用?

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

Stack Overflow用户
提问于 2018-08-10 23:56:21
回答 1查看 65关注 0票数 3

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

代码语言:javascript
复制
public struct TimeSeriesFloat
{
    public DateTime[] DateTime;
    public float[] Value;
}

我希望能够使用LINQ对“值”进行排序,并使DateTime数组也得到排序,以维护DateTimei和Valuei之间的1:1映射。

我试图在类上实现一个要启动的IEnumerator,但我甚至无法在没有错误的情况下使其工作。然后我后退一步,问自己是否值得这样做,因为可能不可能对一个数组进行排序,也不可能对另一个数组进行并行排序,以维护映射。

有可能吗?

编辑:喔!我很抱歉。我匆匆忙忙地把它叫做一门课。是个结构体。::)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-11 00:48:20

正如注释中提到的那样,我将使用一个TimeSeries类来保存一个DateTime和一个浮点:

代码语言:javascript
复制
public struct TimeSeries
{
  public DateTime DateTime;
  public float Value;
}

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

如果出于任何原因,您必须从您所拥有的结构开始,那么您可以将它变成如下所示的IEnumerable:

代码语言:javascript
复制
var tsf = timeSeriesFloat.DateTime
    .Zip(tsf.Value, (f, s) => new {DateTime=f,Value=s});

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

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51795278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档