Поиск в ArrayList - PullRequest
       11

Поиск в ArrayList

3 голосов
/ 21 июня 2011

Я работаю над устаревшим кодом, поэтому не могу использовать общий список здесь. У меня есть ArrayList, возвращаемый из метода уровня данных. Каждый элемент в последнем состоит из идентификатора и поля описания. Я хочу перебрать ArrayList и найти совпадение в строке Description - есть идеи?

Формат

ID    DESCRIPTION
1     SomeValue

Я знаю, что могу сделать это:

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

Но есть ли способ сравнить строки для определенного значения Description?

UPDATE

Исправленная версия ответа Сиэтла Барсука:

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

Ответы [ 5 ]

3 голосов
/ 21 июня 2011
bool found = false;
foreach (Item item in arr)
{
   if ("Some Description".Equals (item.Description, StringComparison.OrdinalIgnoreCase))
   {
      found = true;
      break;
   }
}
1 голос
/ 21 июня 2011

Возможно, я что-то упустил в вашем вопросе, поскольку мне это кажется довольно простым.Но тогда я довольно старая школа ....

Помогает ли это?

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();
    }
}

Как я уже сказал, не уверен, что что-то упустил в вашем вопросе.барсук

0 голосов
/ 20 апреля 2015

Если у вас есть 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;
    }
}
0 голосов
/ 21 июня 2011

Вы уверены, что не можете использовать LINQ?Какую версию Framework вы используете?

То, что это не универсальный тип, не означает, что вы не можете сделать его таким.Рассмотрим arr.Cast (of YourType). Где (...).

0 голосов
/ 21 июня 2011
foreach(object o in arrayList)
{
    var description = o.GetType().GetProperty("Description").GetValue(o, null);
    if("some description".Equals(description) )
    {
       //do something
    }

}
...