需要从C#中的ArrayList中删除值

时间:2013-04-24 17:46:37

标签: c# arraylist

所以我被要求删除带有字母G,GE,G =或Z的结束的旅游代码。唯一不好的是我相信我们会在很多页面上使用此调用这就是我不能在一开始就改变数据库调用的原因所以我想专门为这个人做这个。我的代码调用的是一个填充了我们所有游戏代码的arrayList。有什么方法可以用上面的字母删除游览。以下是我的工作内容。

public void LoadTourCodes()
{
    ddlTourCode.Items.Clear();

    if (ddlTourCode.Visible)
    {
        ddlTourCode.Items.Add(new ListItem(" ", ""));

        ArrayList tourCodes;
        tourCodes = EblTipTours.FindTourCodes();

        foreach (string tourCode in tourCodes)
        {                   
            ddlTourCode.Items.Add(tourCode);
        }
    }
}

1 个答案:

答案 0 :(得分:4)

您可以使用LINQ执行此操作,如下所示:

var toRemove = new []{"G", "GE", "G=", "Z"};
foreach (string tourCode in tourCodes.Where(code => !toRemove.Any(suffix => code.EndsWith(suffix)))) {
    ddlTourCode.Items.Add(tourCode);
}

如果您不能使用LINQ,因为它是遗留系统,您可以像这样重写代码:

string[] toRemove = new string[] {"G", "GE", "G=", "Z"};
foreach (string tourCode in tourCodes) {
    bool good = true;
    foreach (string suffix in toRemove) {
        if (tourCode.EndsWith(suffix)) {
            good = false;
            break;
        }
    }
    if (!good) continue;
    ddlTourCode.Items.Add(tourCode);
}