在派生类型列表上的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
,可以使用use5ѭ:
var list = stuff.OfType<Derived>().Where(d => d.Name == \"me\");
在这种情况下,非“ 1”个对象将被跳过。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...