C# 从阵列列表中删除阵列
我有一个xml文件,希望从中删除任何行。因此,我将xml文件的每一行分配给一个列表:C# 从阵列列表中删除阵列,c#,list,C#,List,我有一个xml文件,希望从中删除任何行。因此,我将xml文件的每一行分配给一个列表: List<string[]> lines = new List<string[]>(); List<string> clmns = new List<string>();//each row is written to clmns ... lines.Add(clmns.ToArray()); 假设我想删除数组中包含5的行。我怎样才能做到 我想我可以使用line
List<string[]> lines = new List<string[]>();
List<string> clmns = new List<string>();//each row is written to clmns
...
lines.Add(clmns.ToArray());
假设我想删除数组中包含5的行。我怎样才能做到
我想我可以使用lines.RemoveAt1删除数组。但是,我找不到一种方法来查找包含搜索字符串的数组的索引。您已经非常接近了。数组只是一个对象,因此以下操作将起作用:
lines.Remove(lines.First(a => a.Contains("5")));
这将获取集合中具有5的第一个数组,并返回要删除的数组对象,然后该数组对象将删除它
要删除所有这些文件,请执行以下操作:
lines.RemoveAll(a => a.Contains("5"));
您需要循环到数组列表并手动删除它。假设您只想删除前5个
foreach(var line in lines)
{
if(line.Contains("5"))
{
lines.Remove(line);
break;
}
}
方法可以在这里帮助您
int index = lines.FindIndex(x=> x.Contains("5"));
if(index >= 0)
{
lines.RemoveAt(index);
}
太好了!它起作用了。非常感谢。我应该学习LINQ来学习这些语句吗?@Siha:FYI:lines。如果没有找到带5的行,First将抛出异常。如果不需要这样做,请改用lines.FirstOrDefault,并在将结果传递给lines.RemoveA之前检查其结果。谢谢。谢谢你的第一条评论,这会让你很难受:。至于学习LINQ,是和否。我使用了LINQ扩展方法,并将lambda表达式传递给它。学习这些将带您走一条与学习LINQ本身不同的道路,因为它基本上是一种语言,类似于SQL。最后,学习这两种方法都会大有裨益@Siha,如果你真的开始研究LINQ的话,作为旁白,我给你的例子使用LINQ来处理对象。LINQ的所有版本的语法都是相同的,但它们是不同的。对于一般用途,扩展就足够了:这将引发异常,因为您正在修改循环中的foreach枚举。@itsme86不,不会。如果我再迭代一次,它就会出现。有趣的是,如果你向后迭代,它不会崩溃。除此之外,我不确定这对使用.First、.FirstOrDefault或类似的东西有什么好处。演示如何在不使用LINQ的情况下实现它。特别是对于那些新加入C的人,他们还没有解决LINQ的问题。谢谢你的回答!非常感谢。这也是一个有用的!
int index = lines.FindIndex(x=> x.Contains("5"));
if(index >= 0)
{
lines.RemoveAt(index);
}