如何从列表中删除项内容
本文关键字:删除 列表 | 更新日期: 2023-09-27 18:09:30
我正在使用逗号分隔字符串的字符串分割机制,并使用foreach循环来循环每个项目,所以如果我想删除一个项目我能做什么?
string lyrsct = drow1["lyricist"].ToString();
var delimiters = new[] {','};
var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in lyrsct1)
{
if()
{
.........i need to remove from here.....
}
}
我想删除if循环中的item
foreach (var item in lyrsct1)
{
if (//item's condition)
{
lyrsct1.Remove(item );
}
}
不能修改数组。你必须把lyrsct1
转换成list。
也不能修改foreach循环中的集合,当你在它上面迭代时。所以用for循环代替
string lyrsct = drow1["lyricist"].ToString();
var delimiters = new[] { ',' };
var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries).ToList(); // List is modifiable.
for (int i = 0; i < lyrsct1.Length; i++)
{
var item = lyrsct1[i];
if ()
{
int indexToRemove = something; // index of item that should be removed
lyrsct1.Remove(indexToRemove);
if(indexToRemove <= i) i--; // correct the indexing
}
}
从这个答案:
foreach语句用于遍历集合以获得需要的信息,但不能用于添加或删除项,以避免不可预测的副作用。如果您需要从源集合中添加或删除项,请使用for循环。
还要看一下:Collection被修改了。枚举操作不能执行
过滤掉一些元素最简单的方法是使用. where LINQ方法。我假设你想要得到一个字符串数组作为结果:
string lyrsct = drow1["lyricist"].ToString();
var delimiters = new[] {','};
var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries)
.Where(item => !condition(item).ToArray();
这将是我的解决方案,删除项目,因为你有一些条件采取行动。
我正在从列表中删除'7'。
var condition = "7";
string lists = "1,2,3,4,5,6,7,7,8,9";
var delimiter = new[] {','};
var splitlist = lists.Split(delimiter,StringSplitOptions.RemoveEmptyEntries).ToList();
var newList = new List<string>();
foreach (var item in splitlist.Where(x => !x.Equals(condition)))
{
newList.Add(item);
}
OR
var newList = splitlist.Where(x => !x.Equals(condition)).ToList();
试试这个
var result = new List<string>();
foreach (var item in lyrsct1.Where(x => !x.Contains("example text"))) // you can also compare values here instead of contains or !Contains (not contains)
{
result.Add(item);
}
或
var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries)
.Where(x => !x.Contains("example text")).ToList();
您可以创建一个只包含过滤元素的新List
:
string lyrsct = drow1["lyricist"].ToString();
var delimiters = new[] {','};
var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
List<string> newList = new List<string>(lyrcst1.Where(elem => !predicate(elem)));
检查构造函数取IEnumerable<T>
: https://msdn.microsoft.com/en-us/library/fkbw11z0.aspx