LINQ在哪里查询不同派生类的集合

emp*_*mpo 1 linq

我有一组来自同一父级的不同对象.

如何从包含混合类型的集合中提取特定类型的对象

例如

public class A {}
public class B : A {}
public class C : A {}
Run Code Online (Sandbox Code Playgroud)

该集合将包含B和C类型的对象

我在那里只需要帮助填写'[]'位

var x = from xTypes in xCollection where '[type of object is type B]' select xTypes;
Run Code Online (Sandbox Code Playgroud)

谢谢.

Ada*_*son 5

您应该使用OfType<T>扩展方法而不是LINQ查询语法:

var x = xCollection.OfType<B>();
Run Code Online (Sandbox Code Playgroud)

这会给你一个回复IEnumerable<B>.如果您确实想使用LINQ查询语法,则必须执行以下操作:

var x = from obj in xCollection where obj is B select (B)obj;
Run Code Online (Sandbox Code Playgroud)