c# - 如何根据派生类字段过滤基类集合?

标签 c# linq inheritance

假设我有一个名为 MyThings 的集合,其中包含 Thing 类的对象,并且我有一个名为 ShinyThing 的派生类来自 Thing,所以我这样做:

MyThings boxWithMyThings = new MyThings();
ShinyThing Diamond = new ShinyThing(){ facets =  10; weight = 500 };
boxWithMyThings.Add(Diamond);

如何使用派生类的属性过滤集合 boxWithMyThings

最佳答案

大概您只想要 ShinyThings?如果是这样,请使用 OfType:

// I'm assuming MyThings implements IEnumerable<MyThing>
var heavyShinyThings = boxWithMyThings.OfType<ShinyThing>()
                                      .Where(x => x.weight > 100);

关于c# - 如何根据派生类字段过滤基类集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701068/

相关文章:

c# - is 和 as 关键字的区别

java - 使用泛型类型扩展类,java

c++ - 继承的运算符重载不适用于派生类

Python 对象继承

c# - 将 Linq 转换为 XSLT

c# - LINQ - SkipWhile 坏了吗?

c# - 部署失败错误 : Mono. AndroidTools.InstallFailedException:失败 [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

c# - ListView 中具有不同 ItemsSource 的 WinRT MVVM-Light ComboBox

c# - 绘制非顺序数据 C# 和 mysql

c# - 我如何使用 linq 从索引数组转到对象集合?