如何在列表中搜索<;字符串>;项目
本文关键字:lt gt 项目 字符串 搜索 列表 | 更新日期: 2023-09-27 18:09:33
我有一个列表,里面装满了这样的字符串:
List<string> data = new List<string>();
data.Add(itemType + "," + itemStock + "," + itemPrice);
所以基本上有3个字符串变量是逗号分隔的。
现在我想在这个列表中搜索并删除特定类型的项目。也就是说,我需要搜索我的列表视图中哪些元素以所需的"itemType"开头。
谢谢。
要回答标题中的问题("如何搜索…"(,这将返回一个包含所需项目的IEnumerable<string>
:
var itemsToRemove = data.Where(x => x.StartsWith(specificItemType + ","));
要回答问题正文中的问题,可以使用List(T).RemoveAll
删除项目:
data.RemoveAll(x => x.StartsWith(specificItemType + ","));
然而,我建议您重新思考您的数据结构。考虑创建一个类Item
:
public class Item {
public string Type { get; set; }
public int Stock { get; set; }
public decimal Price { get; set; }
public override string ToString() {
return itemType + "," + itemStock + "," + itemPrice;
}
}
然后将这些数据结构添加到您的列表中:
List<Item> data = new List<Item>();
data.Add(new Item {Type = itemType, Stock = itemStock, Price = itemPrice});
然后,您可以搜索、读取、重新格式化等,而无需使用字符串操作:
data.RemoveAll(x => x.Type == specificItemType);
var matches = data.Where(d => d.StartsWith(itemType));
您也可以将RemoveAll与谓词条件一起使用:
data.RemoveAll(d => d.StartsWith(itemType));
var typematch = data.Where(t => t.StartsWith(itemType)).ToList();
将返回一个以指定类型开头的字符串列表。
数据设置
List<string> data = new List<string>();
data.Add("Type1" + "," + "A" + "," + "A");
data.Add("Type2" + "," + "B" + "," + "B");
string typeToExclude = "Type2";
int typeIndex = 0;
过滤自身
var items = data.Where(
x => x.Split(new char[] {','})[typeIndex] != typeToExclude);
您想从列表中删除它们,所以…
data.RemoveAll(x => x.StartsWith(itemType));