在 C# 中获取两个数组之间的组合交叉耦合
本文关键字:数组 两个 之间 交叉耦合 组合 获取 | 更新日期: 2023-09-27 17:56:57
我有一个数据表名称dt
,其中包含如下列:
A1 B1 A2 B2.
这意味着我有数组:
A = { A1, A2 }
B = { B1, B2 }
注意:大约八个数组:A,B,C,D,E,F,G,H。我必须配对:
A vs B
C vs D
E vs F
....
我想在两个数组之间划分对,例如:
A1 pair with B2.
A2 pair with B1.
我尝试使用代码:
foreach (DataRow r in dt.Rows)
{
firstSumValCombinate = numRows * (Convert.ToDouble(r["A0_1"]) / Convert.ToDouble(r["B0_2"]));
averageFirst = (firstSumValCombinate * numKillProc) / 2;
......
finalResultFirst = (many manipulate) * firstSumValCombinate;
secondSumValCombinate = numRows * (Convert.ToDouble(r["A0_2"]) / Convert.ToDouble(r["B0_1"]));
averageFirst = (secondSumValCombinate * numKillProc) / 2;
finalResultSecond = (many manipulate) * secondSumValCombinate;
}
我有很多变量number + "SumValCombinate"
计算器时几乎相似。
它只会改变r[columnsName]
,所以我必须写很多代码。
我猜您遇到的问题是您无法存储所有结果。所以解决方案就是将结果存储在 List<double>
.
List<double> firstSumValCombinate = new List<double>();
List<double> secondSumValCombinate = new List<double>();
foreach (DataRow r in dt.Rows)
{
firstSumValCombinate.Add(Convert.ToDouble(r["A0_1"]) / Convert.ToDouble(r["B0_2"]));
secondSumValCombinate.Add(Convert.ToDouble(r["A0_2"]) / Convert.ToDouble(r["B0_1"]));
}
这是一个完整的工作代码示例,它与您所说的将结果存储在 2 个数组中的内容相匹配:
DataTable dt = new DataTable();
dt.Columns.Add("A0_1", typeof(double));
dt.Columns.Add("A0_2", typeof(double));
dt.Columns.Add("B0_1", typeof(double));
dt.Columns.Add("B0_2", typeof(double));
dt.Rows.Add(4.0, 10.0, 2.0, 2.0);
dt.Rows.Add(20.0, 30.0, 10.0, 5.0);
double[] resultsFirst = new double[dt.Rows.Count];
double[] resultsSecond = new double[dt.Rows.Count];
int index = 0;
foreach (DataRow r in dt.Rows)
{
resultsFirst[index] = r.Field<double>("A0_1") / r.Field<double>("B0_2");
resultsSecond[index] = r.Field<double>("A0_2") / r.Field<double>("B0_1");
index++;
}
for (int i = 0; i < resultsFirst.Length; i++)
{
Console.WriteLine($"First = { resultsFirst[i] } ** Second = { resultsSecond[i] }");
}
结果:
First = 2 ** Second = 5
First = 4 ** Second = 3