我对 C# 相当陌生,对 LINQ 也完全陌生。
我有一个 SortedList 类型的现有对象,我想使用 LINQ 对其进行过滤。但是我似乎对此有疑问,显然是因为 SortedList 类型不是通用的。
目前,我已经循环遍历了整个 SortedList,并将其中的对象手动添加到列表中,并使用 LINQ 从那里进行过滤。然而,在我看来,这似乎是垃圾。
是否有更好的方法将我的 SortedList 转换为 List<> (我不关心保留 key )?或者确实将我的 SortedList 转换为 SortedList<> 也许?
最佳答案
原始的SortedList类是Collection的一部分。泛型引入了 SortedList,但如果您有旧代码,那么它就不会使用它。
最简单的方法是使用可用于 SortedList 的 Cast 方法或 OfType 扩展方法。这些方法将为您提供 IEnumerable 列表,您可以应用通用 Linq 操作。确保在开头包含 using System.Linq;
然后您应该能够执行如下操作:
sortedList.Cast<int>().Where(i=>i > 5);
sortedList.OfType<Car>().Where(c=> c.Color == Color.Blue);
关于来自 SortedList C# 的 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2370119/