用于比较嵌套数组的 LINQ 表达式

LINQ expression to compare nested arrays

我有一个线列表,一条线由一组 LatLngs (latitude/longitudes) 组成,因此,这就是列表的表示方式。

IEnumerable<LatLng[]> lineNetwork;

我正在尝试计算 return lineNetwork 中连接到 givenLine 的所有行所需的 LINQ 表达式。要连接,它们的纬度和经度必须等于 givenLine.

中的纬度和经度
LatLng[] givenLine = 
{ 
    new LatLng(Latitude: 0.1, Longitude: 0.1),
    new LatLng(Latitude: 0.2, Longitude: 0.2),
    new LatLng(Latitude: 0.3, Longitude: 0.3)
}

IEnumerable<LatLng[]> connectedLines = lineNetwork.LINQEXPRESSIONRETURNSCONNECTEDLINES(givenLine);

您可能应该为 LatLng 类型定义相等性,我假设它是一个结构。

你的查询应该是这样的

var connectedLines = lineNetwork.Where( line => line.Any( coord => givenLine.Contains( coord ) ) );

在这里,我假设给定正确的相等性实现 Contains() 将 return 为真。

假设 LatLng 是相等的你可以使用 Intersect

var result = lineNetwork.Where (n => n.Intersect(givenLine).Any())

由于Intersect在内部使用哈希表进行查找,因此性能会非常好。