我有一个如下数据对象:
public class RootObject
{
public string ticker {get;set;}
public List<Result> results {get;set;}
}
和结果对象就像:
{
public double open {get;set;}
public double close {get;set;}
}
现在每次相同的置顶我都会得到多个结果。所以我想将所有结果元素添加到相同的置顶栏中。而不是将其多次创建到列表中。
public static List<RootObject> minuteAggregateList = new List<RootObject>();
public void historicalMinuteAggData(string symbol)
{
int daysCount = 0;
for(int i=1; i<=20; i++)
{
DateTime date = DateTime.Now.Date.AddDays(-i);
if (date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday)
{
daysCount++;
var startUnixTime = (date.Add(new TimeSpan(13, 30, 00)).Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds;
var endUnixTime = (date.Add(new TimeSpan(20, 00, 00)).Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds;
using (var reader = new StreamReader(new WebClient().OpenRead(string.Format("API For Fetch Data"))))
{
var x = reader.ReadLine();
RootObject data = JsonConvert.DeserializeObject<RootObject>(x);
minuteAggregateList.Add(data);
}
}
if (daysCount == 7)
break;
}
}
现在,它为我们在minuteAggregateList中的相同报价提供了多个结果。我如何需要AAPL在列表中,然后在AAPL的嵌套结果中添加新元素。那么,如何使在特定行情自动收录器下的嵌套位置添加元素成为可能?
答案 0 :(得分:1)
在将数据添加到列表之前,需要检查相同的报价器值。
public static List<RootObject> minuteAggregateList = new List<RootObject>();
public void historicalMinuteAggData(string symbol)
{
int daysCount = 0;
for(int i=1; i<=20; i++)
{
DateTime date = DateTime.Now.Date.AddDays(-i);
if (date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday)
{
daysCount++;
var startUnixTime = (date.Add(new TimeSpan(13, 30, 00)).Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds;
var endUnixTime = (date.Add(new TimeSpan(20, 00, 00)).Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds;
using (var reader = new StreamReader(new WebClient().OpenRead(string.Format("API For Fetch Data"))))
{
var x = reader.ReadLine();
RootObject data = JsonConvert.DeserializeObject<RootObject>(x);
if(minuteAggregateList.Any(node => node.ticker == data.ticker))
{
minuteAggregateList.Where(node => node.ticker == data.ticker)
.Select(val => {
val.results.AddRange(data.results);
return val;
}).ToList();
}
else
{
minuteAggregateList.Add(data);
}
}
}
if (daysCount == 7)
break;
}
}
要将数据添加到匹配列表中,首先需要选择匹配的行情自动收录器(即使用Where()
)。
然后在Select()
中添加结果数据。
之后,需要使用ToList()
将更改应用于现有列表。
答案 1 :(得分:1)
从下面的代码中,您可以将结果列表添加到现有的报价列表中,也可以将列表放置在所选位置。
label