首页 > 解决方案 > 将值分配给二维数组并获取输出

问题描述

我正在开发一个 Windows 窗体应用程序,并且正在使用 C# 实体框架。我在数据库轨道和防御点中有两个表。

我正在尝试使用 foreach 循环这两个表并做一些方程式并将方程式(_DATIX)的输出分配给 2d 数组。这是我尝试过的无效代码:

double[,] arr = new double[db.track_776.Count(), db.defendedpoints.Count()];

foreach (var track in db.track_776.ToList())
{
    foreach (var defendedPoint in db.defendedpoints.ToList())
    {

        DELATX = ((double)defendedPoint.Long - (double)track.TRK_LongX) * 30.8;
        DELATY = ((double)defendedPoint.Lat - (double)track.TRK_LatY) * 27;

        D = (int)Math.Sqrt((DELATX * DELATX) + (DELATY * DELATY));
        double x = (double)track.XVelocity;
        double y = (double)track.YVelocity;
        S = (int)Math.Sqrt((x * x) + (y * y));

        _DATIX = CalculateDefendedAreaThreatIndex((int)track.Alt,
            (int)defendedPoint.DpAlt,
            (int)defendedPoint.Priority, (int)defendedPoint.Range, DELATX, DELATY, D, S, x, y);

        arr[db.track_776.Count(), db.defendedpoints.Count()] = _DATIX;

所有 DATIX 的输出为 0。(0 是 DATIX 的初始值)

标签: c#winforms

解决方案


我忠实的朋友向我提出了这个解决方案,它奏效了。请注意(他是实体框架专家)'''

  double[,] arr = new double[db.track_776.Count(), db.defendedpoints.Count()];

        for (int i = 0; i < db.track_776.Count(); i++)
        {
            for (int j = 0; j < db.defendedpoints.Count(); j++)
            {
                DELATX = ((double)db.defendedpoints.ToList()[j].Long - (double)db.track_776.ToList()[i].TRK_LongX) * 30.8; // *33 to convert from second to meter
                DELATY = ((double)db.defendedpoints.ToList()[j].Lat - (double)db.track_776.ToList()[i].TRK_LatY) * 27; // *33 to convert from second to meter
                D = (int)Math.Sqrt((DELATX * DELATX) + (DELATY * DELATY));
                double x = (double)db.track_776.ToList()[i].XVelocity;
                double y = (double)db.track_776.ToList()[i].YVelocity;
                S = (int)Math.Sqrt((x * x) + (y * y));

                _DATIX = CalculateDefendedAreaThreatIndex((int)db.track_776.ToList()[i].Alt, (int)db.defendedpoints.ToList()[j].DpAlt,
                    (int)db.defendedpoints.ToList()[j].Priority, (int)db.defendedpoints.ToList()[j].Range, DELATX, DELATY, D, S, x, y);
                arr[i, j] = DATIX;
            }
        }

'''


推荐阅读