错误CS1928:检查带有派生类的列表元素

本文关键字:派生 列表元素 CS1928 检查 错误 | 更新日期: 2023-09-27 18:17:48

我有一个自定义类派生自库(Satsuma),如下所示:

public class DCBaseNode : Node {
    public bool selected = false;
}

和库中返回List<Node>Neighbors方法。我希望能够这样做:

graph.Neighbors(theNode).Any(n => n.selected == true);

Any认为nNode,而不是DCBaseNode,所以它不理解.selected

所以我试了:

graph.Neighbors(theNode).Any<DCBaseNode>(n => n.selected == true);

…这给了我这个错误:

错误CS1928: Type System.Collections.Generic.List<Satsuma.Node>' does not contain a member Any'和最佳扩展方法overload ' System.Linq.Enumerable。任何(这System.Collections.Generic。IEnumerable, System.Func)'有一些无效参数

…但是我不清楚为什么这些参数是无效的

错误CS1928:检查带有派生类的列表元素

听起来你需要向下cast…

graph.Neighbors(theNode)
    .OfType<DCBaseNode>()
    .Any(n => n.selected);