【问题标题】:C# - Error CS1928: Checking for list element with derived classC# - 错误 CS1928:使用派生类检查列表元素
【发布时间】:2014-08-13 19:11:52
【问题描述】:

我有从库(萨摩)派生的自定义类,如下所示:

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

以及库中返回List<Node>Neighbors 方法。我希望能够做到这一点:

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

但是Anyn 视为Node,而不是DCBaseNode,所以它不理解.selected

所以我尝试了:

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

...这给了我这个错误:

错误 CS1928:类型 System.Collections.Generic.List&lt;Satsuma.Node&gt;' does not contain a memberAny' 和最佳扩展方法重载 `System.Linq.Enumerable.Any(this System.Collections.Generic.IEnumerable, System.Func)' 有一些无效参数

...但我不清楚这些论点是如何无效的。

【问题讨论】:

    标签: c# linq generics


    【解决方案1】:

    听起来你需要沮丧...

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

    【讨论】:

    • 哇,完美!谢谢——我不知道 OfType() 方法。
    • @VirgilDisgr4ce - 不要忘记将其标记为答案。
    猜你喜欢
    • 2016-10-03
    • 2021-07-29
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2012-08-06
    • 2020-03-21
    • 2012-04-22
    • 2019-05-10
    相关资源
    最近更新 更多