使用LINQ搜索SortedDictionary中的项目

时间:2014-03-18 06:59:45

标签: c# linq sorteddictionary

我有一个类型为:

的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代码。谢谢!

2 个答案:

答案 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;

希望这有帮助!