我在 MSSQL 中有一张表:
int Id
int Col
int Row
我有一个瓷砖地图,上面有一些物体。每个对象的位置是左上角的瓦片(行号和列号)。对象可以占用很少的瓷砖。
例如,我有一个大小为 3х3的对象。此图块的位置是第 5 行和第10 列。
IEnumerable<int> checkRows = Enumerable.Range(5, 3); // 5, 6, 7
IEnumerable<int> checkCol = Enumerable.Range(10, 3); // 10, 11, 12
在数据库中添加新对象之前,我需要检查该区域中的现有对象:
5:10 | 5:11 | 5:12
6:10 | 6:11 | 6:12
7:10 | 7:11 | 7:12
如果某个对象在 7:12 的位置,我会在找到它之前查询数据库太多。
对于我用过的一块瓷砖:
db.TileSet.Any(x => x.Col == col & x.Row == row)
在这种情况下,使用 Linq 避免 CPU 高负载的最佳解决方案或做法是什么?