我正在尝试使用ConcurrentDictionary来帮助完成过滤任务。
如果列表中出现一个数字,那么我想将一个条目从一个字典复制到另一个字典。
但这部分AddOrUpdate不对 - v.Add(number)
我明白了
“无法将类型'void'隐式转换为'System.Collections.Generic.List'
还有两个错误。
class Program { static void Main(string[] args) { Program p = new Program(); List<int> filter = new List<int> {1,2}; p.Filter(filter); } private void Filter(List<int> filter) { Dictionary<string, List<int>> unfilteredResults = new Dictionary<string, List<int>>(); unfilteredResults.Add("key1", new List<int> { 1,2,3,4,5}); ConcurrentDictionary<string, List<int>> filteredResults = new ConcurrentDictionary<string, List<int>>(); foreach (KeyValuePair<string, List<int>> unfilteredResult in unfilteredResults) { foreach (int number in unfilteredResult.Value) { if (filter.Contains(number)) { filteredResults.AddOrUpdate(unfilteredResult.Key, new List<int> { number }, (k, v) => v.Add(number)); } } } } }I'm trying to use a ConcurrentDictionary to help with a filtering task.
If a number appears in list, then I want to copy an entry from one dictionary to another.
But this part of the AddOrUpdate is not right - v.Add(number)
I get
"Cannot implicitly convert type 'void' to 'System.Collections.Generic.List'
And two more errors.
class Program { static void Main(string[] args) { Program p = new Program(); List<int> filter = new List<int> {1,2}; p.Filter(filter); } private void Filter(List<int> filter) { Dictionary<string, List<int>> unfilteredResults = new Dictionary<string, List<int>>(); unfilteredResults.Add("key1", new List<int> { 1,2,3,4,5}); ConcurrentDictionary<string, List<int>> filteredResults = new ConcurrentDictionary<string, List<int>>(); foreach (KeyValuePair<string, List<int>> unfilteredResult in unfilteredResults) { foreach (int number in unfilteredResult.Value) { if (filter.Contains(number)) { filteredResults.AddOrUpdate(unfilteredResult.Key, new List<int> { number }, (k, v) => v.Add(number)); } } } } }最满意答案
感谢Lucas Trzesniewski在评论中指出我的错误 - 他不想发表回答。
你可能的意思是:(k,v)=> {v.Add(number); 返回v; }
Thanks to Lucas Trzesniewski, for pointing out my mistake in the comments - he didn't want to post an answer.
You probably mean: (k, v) => { v.Add(number); return v; }
更多推荐
发布评论