我有一个多维数字字符串数组,如下所示
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 ;.有可能这样做吗?
答案 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
它产生了这个:
您还可以使用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