我正在尝试编写一个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; }
}
Run Code Online (Sandbox Code Playgroud)
如果您知道列表只有Derived,您可以使用以下Cast<T>方法:
var list = stuff.Cast<Derived>().Where(d => d.Name == "me");
Run Code Online (Sandbox Code Playgroud)
如果只有一些 Derived,你可以使用OfType<T>:
var list = stuff.OfType<Derived>().Where(d => d.Name == "me");
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Derived将跳过非对象.
| 归档时间: |
|
| 查看次数: |
511 次 |
| 最近记录: |