问题描述
|
我试图编写一个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”个对象将被跳过。