C# linq过滤后如何保存字典结构
假设C# linq过滤后如何保存字典结构,c#,linq,dictionary,C#,Linq,Dictionary,假设 public class MyClass { public DateTime Date; public string Symbol { get; set; } public decimal Close { get; set; } } 有没有像ToDictionary这样的简单方法来生成结果?因为您的原始词典已经按符号分组了,所以只需从中投影一个新词典,但过滤值集合: Dictionary<string, List<MyClass>> C =
public class MyClass
{
public DateTime Date;
public string Symbol { get; set; }
public decimal Close { get; set; }
}
有没有像ToDictionary这样的简单方法来生成结果?因为您的原始词典已经按符号分组了,所以只需从中投影一个新词典,但过滤值集合:
Dictionary<string, List<MyClass>> C = new Dictionary<string, List<MyClass>>();
var temData = A.Select(o => o.Value.Where(p => p.Date < today).Take(N)).SelectMany(o => o).GroupBy(o => o.Symbol);
foreach (var item in temData)
{
C.Add(item.Key, item.ToList());
}
@GiladGreen对不起,请更新A是B。关键是什么?它已经是符号了吗?这两个字典基本上是一样的,只是C中有过滤项吗?@GiladGreen是的,关键仍然是Symbol,我想建立一个新字典,但不是重写a。
Dictionary<string, List<MyClass>> C = new Dictionary<string, List<MyClass>>();
var temData = A.Select(o => o.Value.Where(p => p.Date < today).Take(N)).SelectMany(o => o).GroupBy(o => o.Symbol);
foreach (var item in temData)
{
C.Add(item.Key, item.ToList());
}
A = C.ToDictionary(pair => pair.Key,
pair => pair.Value.Where(i => i.Date < today).Take(N).ToList());
pair.Value.Where(i => i.Date < today).OrderByDescending(i => i.Date).Take(N).ToList()