ToDictionary中的Lambda表达式

时间:2012-06-12 10:33:39

标签: c# list dictionary

要将列表转换为字典,我们可以通过以下方式轻松完成:

list.ToDictionary(v=> v, v=>true);

对于ToDictionary中的第一个参数,我可以理解第一个参数是字典的元素。但是v=> true是什么意思?

第二个参数应为IEqualityComparer类型。这有什么用途? v=> true如何与IEqualityComparer相同?

3 个答案:

答案 0 :(得分:1)

This是使用的方法。

第二个参数(v => true)是 elementSelector 用于从每个元素生成结果元素值的转换函数)。

包含元素123的列表会生成包含以下映射的字典(所有值均为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