c# – 使用linq或IEnumerable将数组转换为并发字典的更好方法?
发布时间:2020-12-15 18:28:42 所属栏目:百科 来源:网络整理
导读:我有一个Person对象,我想将它转换为ConcurrentDictionary.有一种将Array转换为Dictionary的扩展方法.有没有将Array转换为ConcurrentDictionary的扩展方法? public class Person{ public Person(string name,int age) { Name =name; Age = age; } public str
我有一个Person对象,我想将它转换为ConcurrentDictionary.有一种将Array转换为Dictionary的扩展方法.有没有将Array转换为ConcurrentDictionary的扩展方法?
public class Person { public Person(string name,int age) { Name =name; Age = age; } public string Name { get; set; } public int Age { get; set; } } Dictionary<int,Person> PersonDictionary = new Dictionary<int,Person>(); Person[] PersonArray = new Person[] { new Person("AAA",30),new Person("BBB",25),new Person("CCC",2),new Person("DDD",1) }; PersonDictionary = PersonArray.ToDictionary(person => person.Age); 用于将Array转换为ConcurrentDictionary的任何类似的扩展方法/ lambda表达式? 解决方法
当然,使用接受IEnumerable< KeyValuePair< int,Person>>的构造函数:
var personDictionary = new ConcurrentDictionary<int,Person> (PersonArray.ToDictionary(person => person.Age)); var将类型推断为ConcurrentDictionary< int,Person>. 如果您要创建一个扩展方法,正如Wasp建议的那样,我建议使用以下版本,它提供了一些更流畅的语法: public static ConcurrentDictionary<TKey,TValue> ToConcurrentDictionary<TKey,TValue> (this IEnumerable<TValue> source,Func<TValue,TKey> valueSelector) { return new ConcurrentDictionary<TKey,TValue> (source.ToDictionary(valueSelector)); } 用法类似于ToDictionary,创建一致的感觉: var dict = PersonArray.ToConcurrentDictionary(person => person.Age); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |