0

要将列表转换为字典,我们可以使用以下方法轻松完成:

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

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

第二个参数应该是类型IEqualityComparer。这是为了什么目的?怎么v=> true一样IEqualityComparer

4

3 回答 3

1

是使用的方法。

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

一个包含元素的列表12并且3会产生一个具有以下映射的字典(所有值都是true):

1: true
2: true
3: true
于 2012-06-12T10:37:16.893 回答
1

当您的列表具有 [1,2,3,4] 并且您将其转换为字典时,list.ToDictionary(v=> v, v=>true);您的字典具有此值

[1,true]
[2,true]
[3,true]
[4,true].

第一个值是键,第二个是值

编辑:

正如@dkson 所说,第二个参数是elementSelector。当您转到 4 个条目中的第 3 个时,您可以在智能感知中看到这一点 :)

于 2012-06-12T10:38:14.557 回答
1

你看看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

于 2012-06-12T10:39:09.440 回答