首页 / C# / c#-时间序列的“加入”
c#-时间序列的“加入”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-时间序列的“加入”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1950字,纯文字阅读大概需要3分钟。
内容图文
![c#-时间序列的“加入”](/upload/InfoBanner/zyjiaocheng/651/007da8a5faa9464b939167679c3c6fc4.jpg)
我正在设计一个用于处理时间序列数据的简单内部框架.
鉴于LINQ是我目前的玩具锤,我想用它敲打一切.
我想在类TimeSeries中实现方法(Select(),Where()等),以便可以使用LINQ语法来处理时间序列数据
有些事情是直截了当的,例如(从A中的x选择x 10),给出一个新的时间序列.
组合两个或多个时间序列的最佳语法设计是什么?
(从A中的A从B中的b选择a)不是很大,因为它表示嵌套循环.
也许加入?这应该对应于隐式时间变量上的join.
(我的想法对应于Lisp的“ zip”功能)
编辑:一些澄清是必要的.
时间序列是一种取决于时间的函数,例如股票报价.
时间序列的组合可能是两个股票价格之间的时间差.
Stock1.MyJoin(Stock2, (a,b)=>a-b)
可能,但是可以使用LINQ语法将其整洁地表达吗?
我希望自己在类MyTimeSeries中实现LINQ方法.
解决方法:
如果我对问题的理解正确,您是否要根据多个序列在序列中的位置来加入它们?
System.Linq.Enumerable类中没有任何东西可以执行此操作,因为Join和GroupJoin方法都基于联接键.但是,碰巧的是,几天前我为此目的编写了一个PositionalJoin方法,如您的示例中所使用的:
sequenceA.PositionalJoin(sequenceB, (a, b) => new { a, b });
下面显示的方法的语义是它不需要序列的长度相等,但是修改序列以要求它是微不足道的.我还注释了使用内部帮助程序类进行参数检查的位置.
public static IEnumerable<TResult> PositionalJoin<T1, T2, TResult>(
this IEnumerable<T1> source1,
IEnumerable<T2> source2,
Func<T1, T2, int, TResult> selector)
{
// argument checking here
return PositionalJoinIterator(source1, source2, selector);
}
private static IEnumerable<TResult> PositionalJoinIterator<T1, T2, TResult>(
IEnumerable<T1> source1,
IEnumerable<T2> source2,
Func<T1, T2, TResult> selector)
{
using (var enumerator1 = source1.GetEnumerator())
using (var enumerator2 = source2.GetEnumerator())
{
bool gotItem;
do
{
gotItem = false;
T1 item1;
if (enumerator1.MoveNext())
{
item1 = enumerator1.Current;
gotItem = true;
}
else
{
item1 = default(T1);
}
T2 item2;
if (enumerator2.MoveNext())
{
item2 = enumerator2.Current;
gotItem = true;
}
else
{
item2 = default(T2);
}
if (gotItem)
{
yield return selector(item1, item2);
}
}
while (gotItem);
}
}
不知道这是否正是您要寻找的东西,但希望能有所帮助.
内容总结
以上是互联网集市为您收集整理的c#-时间序列的“加入”全部内容,希望文章能够帮你解决c#-时间序列的“加入”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。