【问题标题】:How to keep some columns and rows of jagged array and remove unwanted columns and rows in c#如何在c#中保留一些锯齿状数组的列和行并删除不需要的列和行
【发布时间】:2015-07-04 17:43:19
【问题描述】:

我有以下锯齿状数组

int[][] dists1 = new int[][]
            {
               new int[]{0,2,3,5,2,4},
               new int[]{2,0,1,3,5,3},
               new int[]{3,1,0,4,4,3},
               new int[]{5,3,4,0,2,4},
               new int[]{2,5,4,2,0,2},
               new int[]{4,3,3,4,2,0}
            };

我学会了如何删除一个特定的列和行(例如 3)。这里是a link

现在我想要动态编程如下: 考虑这个数组

     int[] day={1,4,5};

这个数组可以是另一个数组(为此我使用了动态术语

数组“day”的元素显示了“dists1”矩阵的行和列,所以我希望名为“dists2”的新锯齿状数组仅包含 1、4、5 的列和行 行和列“0”,因为它是固定的行和列如下:

  int[][] dists2 = new int[][]
            {
               new int[]{0,2,2,4},
               new int[]{2,0,5,3},
               new int[]{2,5,0,2},
               new int[]{4,3,2,0}
            };                                                                                                    

【问题讨论】:

    标签: c# arrays


    【解决方案1】:

    只需修改 that answer 并将 i != 2 条件替换为包含日期数组的方法:

    int[] day = {1,4,5};
    int[][] finalDists = 
            dists.Where((arr, i) => i == 0 || day.Contains(i)) //skip rows
           .Select(arr=> arr.Where((item, i) => i == 0 || day.Contains(i)) //skip cols
           .ToArray())
           .ToArray();
    

    无论如何,如果性能很重要,最好使用 for 循环而不是 LINQ。

    【讨论】:

    • 感谢您的回答,是的,它对我来说很好 :) 只是我认为我们必须省略“!”前一天,因为我需要这些元素
    • 不客气,是的,这是我的错误,我编辑了。
    猜你喜欢
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 2023-03-04
    • 1970-01-01
    • 2017-03-14
    相关资源
    最近更新 更多