要将列表转换为字典,我们可以通过以下方式轻松完成:
list.ToDictionary(v=> v, v=>true);
对于ToDictionary
中的第一个参数,我可以理解第一个参数是字典的元素。但是v=> true
是什么意思?
第二个参数应为IEqualityComparer
类型。这有什么用途? v=> true
如何与IEqualityComparer
相同?
答案 0 :(得分:1)
This是使用的方法。
第二个参数(v => true)是 elementSelector (用于从每个元素生成结果元素值的转换函数)。
包含元素1
,2
和3
的列表会生成包含以下映射的字典(所有值均为true
):
1: true
2: true
3: true
答案 1 :(得分:1)
如果您的列表有[1,2,3,4]并且您通过list.ToDictionary(v=> v, v=>true);
将其转换为字典,则您的字典会显示此值
[1,true]
[2,true]
[3,true]
[4,true].
第一个值是键,第二个值是值
编辑:
正如@dkson所说,第二个参数是 elementSelector 。当你转到4个条目中的第3个时,你可以在intellisense中看到这个:)
答案 2 :(得分:1)
你看看MSDN documentation。这是第二个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
)