我有一个List,它填充了这样的字符串:
List<string> data = new List<string>();
data.Add(itemType + "," + itemStock + "," + itemPrice);
所以基本上有3个逗号分隔的字符串变量。
现在我想在此列表中搜索并删除来自特定类型的项目。那就是我需要搜索列表视图的哪些元素以所需的“itemType”开头。
感谢。
答案 0 :(得分:6)
要回答标题中的问题(“如何搜索...”),这会返回包含所需项目的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);
答案 1 :(得分:2)
var matches = data.Where(d => d.StartsWith(itemType));
您还可以使用RemoveAll with a predicate condition:
data.RemoveAll(d => d.StartsWith(itemType));
答案 2 :(得分:2)
var typematch = data.Where(t => t.StartsWith(itemType)).ToList();
将返回一个以指定类型开头的字符串列表。
答案 3 :(得分:1)
数据设置
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);
答案 4 :(得分:0)
您想要从列表中删除它们......
data.RemoveAll(x => x.StartsWith(itemType));