C# 在C中获得两个数组之间的组合交叉耦合

C# 在C中获得两个数组之间的组合交叉耦合,c#,arrays,C#,Arrays,我有一个datatable名称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 (Data

我有一个datatable名称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;
}
我有许多变量+SumValCombinate

当使用计算器时,它几乎是相似的


它只会更改r[columnsName],因此我必须编写许多代码。

这是一个完整的工作代码示例,与您所说的匹配,将结果存储在两个数组中:

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] }");
}

我猜您遇到的问题是无法存储所有结果。所以解决方法就是将结果存储在列表中


请提供有关哪些不起作用的更多信息。异常?它不返回任何错误。我认为这段代码可以运行,但似乎不起作用。我想我丢了什么东西,所以没用。因此,我希望任何人都能有更好的方法来解决这个问题,我的方法就是解决这个问题。这些只是一些小代码片段。如果你提供了一个最小的可编译可验证的例子,也许人们可以给你更多的帮助。为什么你要用同一个变量来存储所有的值?循环结束后,firstSumValCombinate将只保留最后一行的除法。期望的结果是什么?应该是这样。我更新了我的问题,为什么我必须这样做。两个数组都是这样。但许多阵列都会有更多的代码并失败。
First = 2 ** Second = 5
First = 4 ** Second = 3
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"]));
}