[英]Assign values to 2d array and getting the output
我正在開發 Windows Forms 應用程序,並且正在使用實體框架 C#。 我在數據庫軌道和防御點中有兩個表。
我正在嘗試使用 foreach 循環這兩個表並做一些方程式並將方程式(_DATIX)的 output 分配給二維數組。 這是我嘗試過的無效代碼:
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,output 為 0。(0 是 DATIX 的初始值)
我忠實的朋友向我提出了這個解決方案,它奏效了。 請注意(他是實體框架專家)'''
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;
}
}
'''
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.