使用LINQ在SortedDictionary中搜索项
本文关键字:搜索 SortedDictionary LINQ 使用 | 更新日期: 2023-09-27 17:50:40
我有一个类型为:
的SortedDictionarySortedDictionary<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代码。谢谢!
如果我理解正确的话,那么您需要从具有偶数项计数的列表中获取项目:
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;
希望这对你有帮助!