public class MyClass
{
public DateTime Date;
public string Symbol { get; set; }
public decimal Close { get; set; }
}我想通过Symbol收集(一个符号对应一个日期列表),并将List<MyClass> A重写为SortedList<string, List<MyClass>> B.
SortedList<string, List<MyClass>> B = new SortedList<string, List<MyClass>>();
A.OrderByDescending(o => o.Date).GroupBy(o => o.Symbol)
.Select(o => {
B.Add(o.Key, o.ToList());
return 1;
});在这里,我不能使用Foreach,,所以我使用Select。但是结果B总是空的。
我不确定是否应该打开一个新的问题,我从来没有预料到你的答案是如此的fast......but,它们几乎是相似的,在获得SortedList B之后,我需要进行如下过滤,但是如果我添加了ToList)(),我就不能再调用o.Key,或者如何在linq之后保留SortedList结构。
B.Select(o => o.Value.Where(p => p.Date <= today).Take(volDay))
.Where(o => o.Count() == volDay).ToList()
ForEach(o => C.Add(o.Key, o.ToList()); 发布于 2017-09-05 06:47:08
您没有枚举“选择”。
这些方法不迭代列表,除非具体要求它们,例如通过调用ToList()
但是,您当然可以使用foreach:
foreach( var item in A.OrderByDescending(o=>o.Date).GroupBy(o=>o.Symbol) )
{
B.Add( item.Key, item.ToList() );
}发布于 2017-09-05 07:03:21
List<MyClass> A = new List<MyClass>();
A.Add(new MyClass() { Close = 0.2m, Symbol = "Test1", Date = DateTime.Now });
A.Add(new MyClass() { Close = 0.3m, Symbol = "Test1", Date = DateTime.Now });
A.Add(new MyClass() { Close = 0.1m, Symbol = "Test2", Date = DateTime.Now });
A.Add(new MyClass() { Close = 0.2m, Symbol = "Test2", Date = DateTime.Now });
SortedList<string, List<MyClass>> B = new SortedList<string, List<MyClass>>();
A.OrderByDescending(o => o.Date).GroupBy(o => o.Symbol).ToList()
.ForEach(o => B.Add(o.Key, o.ToList()));
Console.WriteLine(B.Count);
Console.ReadKey();测试了密码。如果要对所有记录执行某些操作,则应该使用foreach循环。
https://stackoverflow.com/questions/46048517
复制相似问题