使用 LINQ 按值过滤字典,其中值是字符串列表
Filter a Dictionary by value where value is a list of string using LINQ
我有一个结构如下的字典:
Dictionary<string, List<string>>
例如,我想检索所有具有长度超过 3 个字符的字符串作为值的条目,这是我尝试过的:
mydictionary.Where(s => s.Value.Where(word => word.Length == 3).ToList().Count > 0) as Dictionary<string, List<string>>
但是我得到的是一个空值,我做错了什么?
您可以利用 Any
方法代替 Where
和 Count
:
var result = mydictionary
.Where(pair => pair.Value.Any(word => word.Length > 3)) // longer than 3 chars
.ToDictionary(pair => pair.Key, pair => pair.Value);
请注意,您应该在 ToDictionary
的帮助下 materialize 而不是 cast as Dictionary<string, List<string>>
我有一个结构如下的字典:
Dictionary<string, List<string>>
例如,我想检索所有具有长度超过 3 个字符的字符串作为值的条目,这是我尝试过的:
mydictionary.Where(s => s.Value.Where(word => word.Length == 3).ToList().Count > 0) as Dictionary<string, List<string>>
但是我得到的是一个空值,我做错了什么?
您可以利用 Any
方法代替 Where
和 Count
:
var result = mydictionary
.Where(pair => pair.Value.Any(word => word.Length > 3)) // longer than 3 chars
.ToDictionary(pair => pair.Key, pair => pair.Value);
请注意,您应该在 ToDictionary
的帮助下 materialize 而不是 cast as Dictionary<string, List<string>>