在多维字符串数组c#中删除Item

时间:2016-06-21 02:50:01

标签: c# .net multidimensional-array

我有一个多维数字字符串数组,如下所示

string [] [] data = new string [3] [];

字符串数组中的项目如下

data[0]
    [0] "EUG5"  string
    [1] "FA1"   string

data[1]
    [0] "9.000000"  string
    [1] "1000"  string

data[2]
    [0] "1" string
    [1] "0" string

我希望删除数据[0] [1],数据[1] [1]和数据[2] [1],这是基于数据[2]的条件,它是" 0&#34 ;.有可能这样做吗?

3 个答案:

答案 0 :(得分:2)

您可以使用private string GetStringFromKey(PgpPublicKey publicKey) { var armor = true; var stream = new MemoryStream() as Stream; publicKey.Encode(stream); -->stream.Position = 0; var keyString = GetString(stream); stream.Close(); Console.WriteLine(keyString); return keyString; } 执行您想要执行的操作。试试这个LINQpad脚本:

Array.Resize

它产生了这个:

enter image description here

您还可以使用var data = new string[][]{new []{"EUG5","FA1"},new []{"9.000000","1000"},new []{"1","0"}}; data.Dump(); Array.Resize(ref data[0],1); Array.Resize(ref data[1],1); Array.Resize(ref data[2],1); data.Dump(); 移动元素,因此这是更通用的情况:

Array.Copy

但与其他海报正确陈述一样,使用var data = new string[][]{new []{"EUG5","FA1"},new []{"9.000000","1000"},new []{"1","0"}}; data.Dump(); var colToDelete = 0; for (int i = 0; i < data.Length; i++) { Array.Copy(data[i],colToDelete+1,data[i],colToDelete,data[i].Length-colToDelete-1); Array.Resize(ref data[i],data[i].Length-1); } data.Dump(); 可以更轻松地方式

答案 1 :(得分:1)

您无法从C#中的Array对象中删除元素,所有数组都是不可变的。为了获得您正在寻找的灵活性,您需要使用List对象。

如果由于某种原因你被困住并且必须使用数组,那么你可以创建一个接受数组并返回数组的方法。然后你可以删除这样的对象:

raise

但是,这不是一个非常优化的解决方案,但它将完成工作。可能存在用于从数组中删除元素的扩展方法解决方案,但是使用List对象会更好,然后通过调用List.ToArray()来返回代码末尾的数组(如果有必要的话)。

答案 2 :(得分:0)

如果你不介意创建新的Array of Arrays而不是重用现有的数组,你可以这样做。

data = data
        .Select(x=> data[2][1] == "0"?   // Condition to filter
                x.Take(1).ToArray()      
                : x.ToArray())
        .ToArray();

选中此Demo