当前位置: 代码迷 >> C# >> datatable作数运算与比较操作
  详细解决方案

datatable作数运算与比较操作

热度:149   发布时间:2016-04-28 08:38:31.0
datatable算数运算与比较操作
本帖最后由 mylww 于 2015-11-04 11:45:08 编辑
各位大大,我有一个datatable表如下 现在想用linq进行这样的操作
将第二行的A1分别和A2,A3,A4相加但是相加的数以大于1000后要减去1000,然后比对第一行4个列中有没有相等数据的,有相等的就记录下来是哪个值相加后匹配的。在A1完成操作后然后第二行的A2也分别和A3,A4相加如刚才一样比对。之后是A3+A4比。然后第三行的也是这样操作。

比如这个表中,运行后的结果如下
行2 A1+A2 匹配 行1 A1
行2 A3+A4 匹配 行1 A4
行3 A1+A3 匹配 行1 A4
行3 A1+A4 匹配 行1 A2
请问应该如何实现。
------解决思路----------------------
int[] source =new int[]{1000,170,290,450} ;//这是你的第一行,单独提取出来
List<int[]> list = new List<int[]>()
{
    new int[] { 360, 640, 850, 600 },//第二行
    new int[]{520,782,930,650},//第三行
};
foreach (var arr in list)
{
    for (var i = 0; i < arr.Length - 1; i++)
    {
        for (var j = i + 1; j < arr.Length; j++)
        {//循环相加
            var addResult = (arr[i] + arr[j]);
            if (addResult > 1000)
            {
                addResult %= 1000;
            }
            if (source.Contains(addResult))//判断在第一行里有没有,如果你是要位置的话,需要自己调整下代码
            {
                Console.WriteLine("{0}+{1}={2}", arr[i], arr[j], addResult);
            }
        }
    }
}
  相关解决方案