使用LINQ在SortedDictionary中搜索项

本文关键字:搜索 SortedDictionary LINQ 使用 | 更新日期: 2023-09-27 17:50:40

我有一个类型为:

的SortedDictionary
SortedDictionary<PriorityType, List<T>> dictionary;

其中PriorityType是Enum类,List包含各种字符串值。

我想使用LINQ在列表中搜索长度为偶数的字符串项。如:

IEnumerable<T> filteredList = new List<T>();  
// Stores items in list whose string length is even
filteredList = //LINQ code;

我已经尝试了很多LINQ的实现,但是,使用LINQ遍历SortedDictionary中的List似乎很难(考虑到我对LINQ比较陌生)。

请帮我写一下LINQ代码。谢谢!

使用LINQ在SortedDictionary中搜索项

如果我理解正确的话,那么您需要从具有偶数项计数的列表中获取项目:

filteredList = dictionary.Select(kvp => kvp.Value)
                         .Where(l => l != null && l.Count % 2 == 0)
                         .SelectMany(l => l)
                         .ToList();

更新:如果你想选择偶数长度的字符串,那么你应该使用List<string>而不是T的通用列表:

SortedDictionary<PriorityType, List<string>> dictionary;
filteredList = dictionary.SelectMany(kvp => kvp.Value)
                         .Where(s => s.ToString().Length % 2 == 0)
                         .ToList();

@Sergey提供的解决方案是正确的&符合我的要求。

我还发现了另一个简单的解决方案,使用select语句。

filteredList = from list in dictionary.Values from item in list where item.ToString().Length % 2 == 0 select item;

希望这对你有帮助!