要将列表转换为字典,我们可以使用以下方法轻松完成:
list.ToDictionary(v=> v, v=>true);
对于 中的第一个参数ToDictionary
,我可以理解为第一个参数是字典的元素。但这是什么意思v=> true
?
第二个参数应该是类型IEqualityComparer
。这是为了什么目的?怎么v=> true
一样IEqualityComparer
?
要将列表转换为字典,我们可以使用以下方法轻松完成:
list.ToDictionary(v=> v, v=>true);
对于 中的第一个参数ToDictionary
,我可以理解为第一个参数是字典的元素。但这是什么意思v=> true
?
第二个参数应该是类型IEqualityComparer
。这是为了什么目的?怎么v=> true
一样IEqualityComparer
?
这是使用的方法。
第二个参数 (v => true) 是elementSelector(从每个元素生成结果元素值的转换函数)。
一个包含元素的列表1
,2
并且3
会产生一个具有以下映射的字典(所有值都是true
):
1: true
2: true
3: true
当您的列表具有 [1,2,3,4] 并且您将其转换为字典时,list.ToDictionary(v=> v, v=>true);
您的字典具有此值
[1,true]
[2,true]
[3,true]
[4,true].
第一个值是键,第二个是值
编辑:
正如@dkson 所说,第二个参数是elementSelector。当您转到 4 个条目中的第 3 个时,您可以在智能感知中看到这一点 :)
你看看MSDN 文档。这是采用第二个IEqualityComparer
参数的重载:
ToDictionary<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IEqualityComparer<TKey>)
但是,在您的示例中,您使用的Func<TSource, TElement>
是负责生成字典值的重载:
ToDictionary<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)
(在您的情况下,所有值都是简单的true
)