基于派生类型列表的Linq表达式

4

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

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; }
}
1个回答

7

如果你知道列表只有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对象将被跳过。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接