派生类型列表上的Linq表达式



我正试图编写一个Linq表达式来检查派生类中的属性,但该列表是由基类的成员组成的。下面的代码示例。以"var list"开头的Process方法的第二行没有编译,但我不确定应该使用什么语法使其有效?

public class Manager
{
    public void Process()
    {
        Base[] stuff = { new Derived() { Id = "1", Name = "me" } };
        var list = stuff.Where<Derived>(d => d.Name == "me");
    }
}
public class Base
{
    public string Id { get; set; }
}
public class Derived : Base
{
    public string Name { get; set; }
}

如果您知道列表只有Derived,则可以使用Cast<T>方法:

var list = stuff.Cast<Derived>().Where(d => d.Name == "me");

如果只有一些Derived,则可以使用OfType<T>:

var list = stuff.OfType<Derived>().Where(d => d.Name == "me");

在这种情况下,将跳过非Derived对象。

相关内容

  • 没有找到相关文章

最新更新