如何在List <string>项目</string>中搜索

时间:2011-09-22 11:40:25

标签: c# string list

我有一个List,它填充了这样的字符串:

List<string> data = new List<string>();
data.Add(itemType +  "," + itemStock + "," + itemPrice);

所以基本上有3个逗号分隔的字符串变量。

现在我想在此列表中搜索并删除来自特定类型的项目。那就是我需要搜索列表视图的哪些元素以所需的“itemType”开头。

感谢。

5 个答案:

答案 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));