搜索ArrayList

时间:2011-06-20 21:12:23

标签: c# asp.net arraylist .net-1.1

我正在处理一些遗留代码,所以不能在这里使用Generic List。我有一个从数据层方法返回的ArrayList。最后一项包含ID和描述字段。我想循环遍历ArrayList并在Description字符串中搜索匹配 - 任何想法?

格式

ID    DESCRIPTION
1     SomeValue

我知道我可以这样做:

bool found = false; 
if (arr.IndexOf("SomeValue") >= 0) 
{
    found = true;    
}

但是有没有办法对特定的描述值进行字符串比较?

更新

西雅图巴杰的修正版答案:

for (int i = 0; i < arr.Count; i++)
{
    if (arr[i].ToString() == "SomeValue")
    {
        // Do something
        break;
    }
}

5 个答案:

答案 0 :(得分:3)

bool found = false;
foreach (Item item in arr)
{
   if ("Some Description".Equals (item.Description, StringComparison.OrdinalIgnoreCase))
   {
      found = true;
      break;
   }
}

答案 1 :(得分:1)

我可能会在你的问题中遗漏一些东西,因为这对我来说似乎很简单。但后来我很老了......

这有帮助吗?

protected void Page_Load(object sender, EventArgs e)
{
    ArrayList arrSample = new ArrayList();

    // populate ArrayList
    arrSample.Items.Add(0, "a");
    arrSample.Items.Add(1, "b");
    arrSample.Items.Add(2, "c");

    // walk through the length of the ArrayList
    for (int i = 0; i < arrSample.Items.Count; i++)
    {
        // you could, of course, use any string variable to search for.
        if (arrSample.Items[i] == "a")
            lbl.Text = arrSample.Items[i].ToString();
    }
}

正如我所说,不确定我是否遗漏了你的问题。 獾

答案 2 :(得分:0)

foreach(object o in arrayList)
{
    var description = o.GetType().GetProperty("Description").GetValue(o, null);
    if("some description".Equals(description) )
    {
       //do something
    }

}

答案 3 :(得分:0)

您确定不能使用LINQ吗?你在运行什么版本的框架?

仅仅因为这不是通用类型并不意味着你不能这样做。考虑arr.Cast(YourType).Where(...)。

答案 4 :(得分:0)

如果您有ArrayList,请尝试使用ArrayLists的“Contains”或“BinarySearch”内置函数。

protected void Page_Load(object sender, System.EventArgs e)
    {
    ArrayList alArrayList = new ArrayList();
    alArrayList.Insert(0, "a");
    alArrayList.Insert(1, "b");
    alArrayList.Insert(2, "c");
    alArrayList.Insert(3, "d");
    alArrayList.Insert(4, "e");

    //Use Binary Search to find the index within the array
    if (alArrayList.BinarySearch("b") > -1) {
            txtTemp.Text += "Binary Search Array Index: " + alArrayList.BinarySearch("b").ToString;
    }

    //Alternatively if index not needed use Contains function
    if (alArrayList.Contains("b")) {
            txtTemp.Text += "Contains Output: " + alArrayList.Contains("b").ToString;
    }
}