C# ToDictionary中的Lambda表达式
要将列表转换为词典,我们可以通过以下操作轻松完成:C# ToDictionary中的Lambda表达式,c#,list,dictionary,C#,List,Dictionary,要将列表转换为词典,我们可以通过以下操作轻松完成: list.ToDictionary(v=> v, v=>true); 对于ToDictionary中的第一个参数,我可以理解第一个参数是字典的元素。但是什么是v=>true 第二个参数的类型应为IEqualityComparer。这有什么作用?v=>true如何与IEqualityComparer相同?使用的方法是什么 第二个参数(v=>true)是elementSelector(用于从每个元素生成结果元素值的转换函数) 包含元素
list.ToDictionary(v=> v, v=>true);
对于ToDictionary
中的第一个参数,我可以理解第一个参数是字典的元素。但是什么是v=>true
第二个参数的类型应为IEqualityComparer
。这有什么作用?v=>true
如何与IEqualityComparer
相同?使用的方法是什么
第二个参数(v=>true)是elementSelector(用于从每个元素生成结果元素值的转换函数)
包含元素1
、2
和3
的列表将生成具有以下映射的字典(所有值均为true
):
是指所使用的方法
第二个参数(v=>true)是elementSelector(用于从每个元素生成结果元素值的转换函数)
包含元素1
、2
和3
的列表将生成具有以下映射的字典(所有值均为true
):
当您的列表有[1,2,3,4]并且您通过
list.ToDictionary(v=>v,v=>true)将其转换为字典时代码>那么你的字典有这个值
[1,true]
[2,true]
[3,true]
[4,true].
第一个值是键,第二个值是键
编辑:
正如@dkson所说,第二个参数是元素选择器。当您转到4个条目中的第3个时,您可以在intellisense中看到这一点:)当您的列表有[1,2,3,4]时,您可以通过list.ToDictionary(v=>v,v=>true)将其转换为字典代码>那么你的字典有这个值
[1,true]
[2,true]
[3,true]
[4,true].
第一个值是键,第二个值是键
编辑:
正如@dkson所说,第二个参数是元素选择器。当您转到4个条目中的第3个时,您可以在intellisense中看到这一点:)您可以查看。这是第二个IEqualityComparer
参数的重载:
ToDictionary<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IEqualityComparer<TKey>)
ToDictionary(IEnumerable、Func、IEqualityComparer)
但是,在您的示例中,您正在使用重载,该重载接受负责生成字典值的Func
:
ToDictionary<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)
ToDictionary(IEnumerable,Func,Func)
(在您的例子中,所有值都是true
)请查看。这是第二个IEqualityComparer
参数的重载:
ToDictionary<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IEqualityComparer<TKey>)
ToDictionary(IEnumerable、Func、IEqualityComparer)
但是,在您的示例中,您正在使用重载,该重载接受负责生成字典值的Func
:
ToDictionary<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)
ToDictionary(IEnumerable,Func,Func)
(在您的情况下,所有值都是简单的true
)或此方法的英文版本;-)字典顾名思义就是一个字典,它用来用一个键查找一个值。如果您没有也不需要值,那么最好使用hashset或英语中的this方法;-)字典顾名思义就是一个字典,它用来用一个键查找一个值。如果您没有也不需要值,那么使用HashSetYes可能会更好,但Intellisense显示TodCitialatory中的secodn元素必须是IEqualityComparer
Yes,但Intellisense显示TodCitialatory中的secodn元素必须是IEqualityComparer