将Key设置为T的属性将List <t>转换为Dictionary <string,t>

时间:2019-04-07 23:58:42

标签: c# list linq dictionary keyvaluepair

public class Quote
{
    public decimal Price { get; set; }
    public string Symbol { get; set; }
}

public List<Quote> quotes = 
    new List<Quote>(){new Quote{Price=100.00,Symbol="AAPL"},
                      new Quote{Price=200.00,Symbol="GOOG"}}

List<string,Quote> positions = new List<string,Quote>();

我想将每个position.Key设置为Quote.Symbol,每个position.Value设置为Quote

转换的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

如果我理解您的要求(如果这么大的话),它应该很简单

var someDictionary = quotes.ToDictionary(x => x.Symbol);

Enumerable.ToDictionary Method

  

从IEnumerable创建字典。

也来看看

Enumerable.ToLookup Method

  

从IEnumerable创建通用查找。

字典是1:1映射(每个键都映射到单个值),并且事实成立后字典是可变的(可编辑的)。

查找是1:1映射(多映射;每个键都映射到具有该键的值的IEnumerable<>),并且ILookup<,>接口上没有任何变异。 / p>