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()