【问题标题】:How can I access what a previous variable was set to?如何访问先前变量设置的内容?
【发布时间】:2012-06-25 15:34:24
【问题描述】:

我有一个嵌套在 foreach 中的 foreach。我需要检查 d 是否小于所有其他 d。我怎样才能做到这一点?如果有办法查看变量之前设置的内容,那么我自己就可以做到这一点。如果没有,请您设计一个解决方案吗?

这是我的代码:

foreach (DataRow newRow1 in dt.Rows)
            {
                string zipCode1 = newRow1[2].ToString();
                double latitude2 = Convert.ToDouble(newRow1[3]);
                double longitude2 = Convert.ToDouble(newRow1[4]);

                foreach (DataRow newRow2 in dt2.Rows)
                {
                    if (newRow2[2].ToString().Equals(zipCode1))
                    {
                        newRow1[5] = newRow2[1].ToString();
                        double latitude = Convert.ToDouble(newRow1[3]);
                        double longitude = Convert.ToDouble(newRow1[4]);
                        double d = Math.Sqrt(Math.Abs(latitude - latitude2) * Math.Abs(latitude - latitude2) + Math.Abs(longitude - longitude2) * Math.Abs(longitude - longitude2));
                        Console.WriteLine("Found match!");
                    }
                }
            }

【问题讨论】:

标签: c# datatable datarow datacolumn


【解决方案1】:

这相当于通过线性搜索找到min 的旧算法:

foreach (DataRow newRow1 in dt.Rows)
        {
            string zipCode1 = newRow1[2].ToString();
            double latitude2 = Convert.ToDouble(newRow1[3]);
            double longitude2 = Convert.ToDouble(newRow1[4]);

            // Start minD at the max value
            double minD = double.MaxValue;
            foreach (DataRow newRow2 in dt2.Rows)
            {
                if (newRow2[2].ToString().Equals(zipCode1))
                {
                    newRow1[5] = newRow2[1].ToString();
                    double latitude = Convert.ToDouble(newRow1[3]);
                    double longitude = Convert.ToDouble(newRow1[4]);
                    double d = Math.Sqrt(Math.Abs(latitude - latitude2) * Math.Abs(latitude - latitude2) + Math.Abs(longitude - longitude2) * Math.Abs(longitude - longitude2));
                    minD = Math.Min(minD, d);
                    Console.WriteLine("Found match!");
                }
            }
            Console.WriteLine("Min D: {0}", minD);
        }

【讨论】:

  • 另外,当我添加你说要添加的内容时出现错误:“输入字符串的格式不正确。”
猜你喜欢
  • 1970-01-01
  • 2021-10-02
  • 2012-04-18
  • 2021-09-07
  • 2020-08-07
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多