求一个Linq

shsyzl007 2019-04-07 02:21:40
OpenPrice是股票开盘价,ClosePrice是收盘价。
public class stock
{
public double OpenPrice { get; set; }
public double ClosePrice { get; set; }
public DateTime Tradetime { get; set; }
}

List<stock> 存了很多数据,求该列表内累计的涨跌幅度。
即Sum(ClosePrice-OpenPrice)

Linq能直接写,实现吗?
...全文
230 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wid999 2019-04-08
  • 打赏
  • 举报
回复
我也错了……
应该是这样:
今天涨幅=今天收盘-昨天收盘
wid999 2019-04-08
  • 打赏
  • 举报
回复
今天涨幅=今天开盘-昨天收盘
前面回复的都写错了……
zzyhost 2019-04-08
  • 打赏
  • 举报
回复
stocks.Sum(s => s.ClosePrice - s.OpenPrice);
wanghui0380 2019-04-08
  • 打赏
  • 举报
回复
so,不需要找max,min,也不需要sum
wanghui0380 2019-04-08
  • 打赏
  • 举报
回复
股票k线理论,告诉你一跟k线,就是4个值 “开盘,收盘,最高,最低”有这4个就你可以算1天的把(中间所有数据都忽略) 然后呢?能不能举一反三,求半年的涨跌幅,振幅。其实一样一样一样滴。 半年等于1天,等于1分钟,还是“开盘,收盘,最高,最低” 想你说的求涨/跌幅,其实就是按时间排序, 第一个开盘价,最后一个收盘价,然后算这两个之间的价差比率,如此而已。
秋的红果实 2019-04-08
  • 打赏
  • 举报
回复

List<stock> stocks = new List<stock>() { new stock { OpenPrice = 1, ClosePrice = 3, Tradetime = DateTime.Now },new stock { OpenPrice = 3, ClosePrice = 10, Tradetime = DateTime.Now.AddDays(-1) } };
double query = stocks.Sum(s => s.ClosePrice - s.OpenPrice); //输出9,负数表示累计跌了

jxdnzxb6369 2019-04-08
  • 打赏
  • 举报
回复
答:不能, List 没有 max方法
stherix 2019-04-07
  • 打赏
  • 举报
回复
无非就是按时间排序后,最大值的ClosePrice减最小值的OpenPrice var orderedList = list.OrderBy(x=>x.Tradetime); var total = orderedList.Last().ClosePrice - orderedList.Last().OpenPrice; 当然如果要最效率 可以用循环手动寻找时间的最大值和最小值的元素,再进行相减(如果本来就是有序的,那么就更简单)
xqing0101 2019-04-07
  • 打赏
  • 举报
回复
var result = from t in list
                         group t by new { } into g
                         select new {
                             total = g.Sum(t => t.ClosePrice-t.OpenPrice)
                         };

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧