我有一个类型为:
的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代码。谢谢!
答案 0 :(得分:3)
如果我理解正确,那么您需要列表中甚至包含项目数的项目:
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();
答案 1 :(得分:0)
@Sergey提供的解决方案是正确的&amp;符合我的要求。
我还使用select
语句找到了另一个简单的解决方案。
filteredList = from list in dictionary.Values from item in list where item.ToString().Length % 2 == 0 select item;
希望这有帮助!