【发布时间】:2012-10-03 11:42:08
【问题描述】:
我有问题。我正在使用下面的代码找到一个交叉点:
Envelope[][] extents = new Envelope[tilesCountX][tilesCountY];
// some code here to set "extents" values
var intersectedTiles =
extents
.SelectMany(es => es)
.Where(e => EnvIntersects(e, bounds))
.ToList();
private static bool EnvIntersects(Envelope e1, Envelope e2)
{
return e1.MinX >= e2.MinX && e1.MaxX <= e2.MaxX && e1.MinY >= e2.MinY && e1.MaxY <= e2.MaxY;
}
它有效,但我想获取相交范围的索引。
例如
如果extents[2][7]是相交元素,我想得到2和7。
是否可以通过修改我的代码来实现?
[编辑]
bounds 是一个 Envelope,其中包含 MinX、MinY、MaxX 和 MaxY 属性。
Envelope bounds = new Envelope();
bounds.MinX = some_value_1;
bounds.MaxX = some_value_2;
bounds.MinY = some_value_3;
bounds.MaxY = some_value_4;
【问题讨论】:
-
“界限”从何而来? SelectMany 似乎不合适。
-
您使用的是什么版本的 C#?
Envelope[][] extents = new Envelope[tilesCountX][tilesCountY];在 .NET 4.0 中无法为我编译 -
你的
EnvIntersects需要比我所谓的“交叉点”更严格的条件,顺便说一句。 -
@w0lf 我知道,但我写了
tilesCountY是为了告诉你Y-size的价值。
标签: c# linq intersection set-intersection