使用 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 方法代替 WhereCount:

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