【发布时间】:2014-05-24 15:43:02
【问题描述】:
我有 cPoint 对象的列表。每个 cPoint 都有 cPosition 对象的列表。我必须进行查询,只返回其 cPositions 满足条件的 cPoints,并且每个 cPoint 必须只包含那些满足条件的 cPositions。 LINQ可以吗?
'classes
Public Class cPoint
Private _PointName As String
Public Positions As colPositions
'...
End Class
Public Class cPosition
Private _X As Double
Private _Y As Double
Private _Z As Double
Private _IntervalStart As Long
'...
End Class
Public Class cPoints
Inherits System.ComponentModel.BindingList(Of cPoint)
End Class
Public Class cPositions
Inherits System.ComponentModel.BindingList(Of cPosition)
End Class
我做的最接近的事情是这个查询,但它不返回过滤的 cPoints。查询中的每个项目都有两个对象:1. 过滤的点(带有未过滤的子位置)和 2. 属于该点的过滤位置。
Dim PtList As cPoints
'...
'my query
Dim query = (From pt In PtList
From pos In pt.Positions
Where (pos.IntervalStart < 222)
Select New With {Key .PT = pt,
Key .PTPOS = (From position In pt.Positions Where (position.IntervalStart < 222)).ToList}).Distinct
【问题讨论】:
-
这在Linq中很简单,看我的回答。
-
查看我的更新。建议:C# 还不错:)