从动态数据表中查找行中的最小值

本文关键字:最小值 查找 数据表 动态 | 更新日期: 2023-09-27 18:31:09

所以我有 2 个数据表,第一个数据表是一个传统的数据表,它从某些 sql 语句中获取数据。

数据表 1:

 | user_point |  | lat       |  | lng        |  | radius      |
 --------------------------------------------------------------
 | userpoint0 |  | 43.702943 |  | -79.37478  |  | 3.10685596  | 
 | userpoint1 |  | 43.672655 |  | -79.479837 |  | 4.970969536 |

但是,某些列是根据数据表 1 中的用户点数在数据表 2 中动态生成的。

 | id    |    | lat              | | lng               |  | DistanceFromUserpoint0 | | DistanceFromUserpoint1 | 
 -------------------------------------------------------------------------------------------------------------
 | 23184 |    | 43.6495246887207 | | -79.4244003295898 |  | 4.4464409231533  |       | 3.19880848195014 | 
 | 37957 |    | 43.6372413635254 | | -79.4151458740234 |  | 4.96760996486758 |       | 4.05524888969018 | 
 | 37965 |    | 43.636589050293  | | -79.4169921875    |  | 5.04670564187353 |       | 4.00990129127938 | 
 | 60467 |    | 43.735538482666  | | -79.4437942504883 |  | 4.11692339031897 |       | 4.70303114025665 | 
 | 60475 |    | 43.735538482666  | | -79.4437942504883 |  | 4.11692339031897 |       | 4.70303114025665 | 
 | 65615 |    | 43.7292861938477 | | -79.4317932128906 |  | 3.37923630122185 |       | 4.59015403452972 | 
 | 65623 |    | 43.7292861938477 | | -79.4317932128906 |  | 3.37923630122185 |       | 4.59015403452972 | 
 | 3196486 |  | 43.6624603271484 | | -79.4242172241211 |  | 3.7316961595166  |       | 2.86768157143755 | 
 | 3196494 |  | 43.6624603271484 | | -79.4242172241211 |  | 3.7316961595166  |       | 2.86768157143755 | 
 | 5756393 |  | 43.719165802002  | | -79.4295654296875 |  | 2.95683309139676 |       | 4.07847187106957 | 
 | 5756922 |  | 43.719165802002  | | -79.4295654296875 |  | 2.95683309139676 |       | 4.07847187106957 | 
 | 5756956 |  | 43.719165802002  | | -79.4295654296875 |  | 2.95683309139676 |       | 4.07847187106957 | 
 | 5756991 |  | 43.719165802002  | | -79.4295654296875 |  | 2.95683309139676 |       | 4.07847187106957 | 
 | 5757096 |  | 43.719165802002  | | -79.4295654296875 |  | 2.95683309139676 |       | 4.07847187106957 |
 | 5757134 |  | 43.719165802002  | | -79.4295654296875 |  | 2.95683309139676 |       | 4.07847187106957 |

现在,我将在数据表 2 的末尾添加一个名为 Closest_userpoint 的新列,该列将存储距离的值,该距离是该行最近的用户点。

所以现在我的问题是如何找到该行的最小/最小值,该行具有动态生成的列(这意味着可以有从 none 到 100 的任意数量的用户点)。我正在寻找一个最简单,最有效的答案,谢谢

编辑:

这是我关于如何创建动态列的代码,但是我坚持找出逻辑,根据与用户点的距离,用该行的最小值填充最近的用户点列

编辑2:

奖励问题:

最后,我想确定最接近的点/最小值是否落在最接近的用户点的 raidus 中。

从动态数据表中查找行中的最小值

如果在填充值后尝试查找最小值会更容易

使用 System.Linq; 作为 Min() 方法

if (userpoints.Rows.Count > 1)
{
foreach (DataRow dr in selectedPanels.Rows)
{
List<string> alluserpoints = new List<string>();             
for (int i = 0; i < userpoints.Rows.Count; i++)
{
if (Convert.ToDouble(userpoints.Rows[i].radius) > Convert.ToDouble(dr["DistanceFromUserpoint" + i]))
{
    alluserpoints.Add(dr["DistanceFromUserpoint" + i]+"+userpoint"+i);
}
}
if(alluserpoints.Count>0)
dr["Closest_UserPoint"] = alluserpoints.Min();  
else
dr["Closest_UserPoint"] ="none";                        
}
}
else
{
foreach(DataRow dr in selectedPanels.Rows)
{
if(Convert.ToDouble(userpoints.Rows[0].radius>Convert.ToDouble(dr["DistanceFromUserpoint0"])
{
dr["Closest_UserPoint"]=dr["DistanceFromUserpoint0"]+"+userpoint0";
}
else
{
dr["Closest_UserPoint"]="none";
}
}
}