提问人:thepasserby 提问时间:9/13/2020 更新时间:9/13/2020 访问量:58
检查对象列表中是否有任何相同类型的对象?[复制]
Checking is there any same type object inside of the object list? [duplicate]
问:
我有一个从 A 类型派生的对象列表(X 和 Y 派生自 A)
List<A> list = new List<A>()
{
new X(),
new Y(),
};
我有一个派生自 A 类型的对象。Z 对象
我想检查类型是否相等,如果列表对象类型中存在与 Z 对象相同的类型 我怎样才能写出这样的代码?
答:
0赞
user12031933
9/13/2020
#1
您可以简单地编写为建议的副本:
bool containsOfTypeZ = list.OfType<Z>().Any();
或者正如@KlausGütter所想的那样:
var someType = someInstance.GetType();
bool containsOfSomeRuntimeType = list.Any(o => o.GetType() == someType);
评论
1赞
Klaus Gütter
9/13/2020
FirstOrDefault() != null
可以简化为Any()
2赞
nalnpir
9/13/2020
无需使用 where 或 Z 类型的实例,您可以简单地使用像 this list 这样的 linq。任意(x => x.GetType() == typeof(Z));
2赞
Jon Skeet
9/13/2020
或者,如果您需要查找任何派生自的内容,这将有所帮助。list.Any(a => a is Z)
Z
0赞
thepasserby
9/13/2020
顺便说一句,我的对象类型不支持任何接口,如IEnumerable等
0赞
9/13/2020
@thepasserby 没关系......我们对实例采取行动。 可以是任何类型,偶数和或等。因此,Linq 扩展方法作用于 .List<>
Z
class
struct
enum
delegate
IEnumerable<Z>
评论