我有一个列表,其中包含两种不同类型的对象,分别是折线和文本。 我想创建一个新的只包含折线的列表。 我的做法是: var list2 = list1.SelectMany(x=> x.Type == PolyLine) 错误:'PolyLine'是一个类型,在给定的上下文中无效。 我该如何在这里过滤这些对象?
只需使用OfType<T>扩展方法:var list2 = list1.OfType<PolyLine>().ToList(); 这将选择 list1 中所有类型为 PolyLine 的元素。 ToList() 后,list2 的结果类型为 List<PolyLine>。
你不需要使用 SelectMany,而是需要使用 Where 子句:var result = list1.Where(x => x is PolyLine); 使用is运算符获取正确的类型。 可以进一步简化此操作,使用OfType扩展方法。
var list2 = list1.OfType<PolyLine>().ToList();
。 - René Vogt