【问题标题】:LINQ Union objects with same Base Class具有相同基类的 LINQ 联合对象
【发布时间】:2011-04-05 18:30:55
【问题描述】:

我正在尝试使用 Union 从多个对象列表中创建我所有对象的列表。

Return Chart.AnnotativeNodes.Union( _
         Chart.DecisionNodes.Union( _
           Chart.EndNodes.Union( _
             Chart.StartNodes.Union(Chart.WorkCenterNodes))))

上面的行出现错误,因为我无法将List(of AnnotativeNode)List(of DecisionNode) 合并。每个列表都定义为 List(of EndNode)List(of StartNode),但每个类都继承自基类型 Node。

有没有一种可能的方法来联合这些以获得IEnumerable(of Node) 的结果?

【问题讨论】:

    标签: vb.net linq-to-entities union


    【解决方案1】:

    如果您使用的是 .NET 4,您应该可以这样做:

    Return Chart.AnnotativeNodes.Union(Of Node) _
               (Chart.DecisionNodes.Union(Of Node) _
                   (Chart.EndNodes.Union(Of Node) _
                       (Chart.StartNodes.Union(Of Node)(Chart.WorkCenterNodes))))
    

    由于 .NET 4 中的通用协方差,这应该可以工作。否则,您可以在每个集合上调用 Cast(Of Node)

    我怀疑你的代码可以写得更易读,因为:

    Return Chart.AnnotativeNodes.Union(Of Node)(Chart.DecisionNodes) _
                                .Union(Of Node)(Chart.EndNodes) _
                                .Union(Of Node)(Chart.StartNodes) _
                                .Union(Of Node)(Chart.WorkCenterNodes)
    

    如果你需要联合以特定顺序发生,你可以弄乱它 - 我没有打扰,因为联合首先是一个集合操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 2020-06-20
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多