我有一个行列表,一行包含一个LatLng数组(纬度/经度),因此,这就是列表的表示方式。
IEnumerable<LatLng[]> lineNetwork;
我正在尝试计算返回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);
答案 0 :(得分:3)
你可能应该为LatLng类型定义相等,我假设它是一个结构。
您的查询将类似于
var connectedLines = lineNetwork.Where( line => line.Any( coord => givenLine.Contains( coord ) ) );
在这里,我假设给出正确的等式实现Contains()
将返回true。
答案 1 :(得分:2)
假设LatLng
是等同的,您可以使用Intersect
var result = lineNetwork.Where (n => n.Intersect(givenLine).Any())
由于Intersect
在内部使用哈希表进行查找,因此会产生非常好的性能。