поиск arraylist - PullRequest
       20

поиск arraylist

1 голос
/ 05 апреля 2011

У меня есть arraylist в моем проекте веб-приложения в asp.net/C#/VS2008 и Я использую .net 3.5

Я добавляю содержимое в arraylist, используякласс, который определяется следующим образом:

using System.Web;

class ShoppingCartDataStore
{
    private string componentName;
    private string componentPrice;
    private string componentFileSize;
    private string componentDescription;

    public ShoppingCartDataStore(string componentName, string componentPrice, string componentFileSize, string componentDescription){
        this.componentName = componentName;
        this.componentPrice = componentPrice;
        this.componentFileSize = componentFileSize;
        this.componentDescription = componentDescription;
    }

    public string ComponentName
    {
        get
        {
            return this.componentName;
        }
    }

    public string ComponentPrice
    {
        get
        {
            return this.componentPrice;
        }
    }

    public string ComponentFileSize
    {
        get
        {
            return this.componentFileSize;
        }
    }

    public string ComponentDescription
    {
        get
        {
            return this.componentDescription;
        }
    }
}

, и я добавляю содержимое в массив с помощью следующего кода:

ArrayList selectedRowItems = new ArrayList();
selectedRowItems.Add(new ShoppingCartDataStore(componentName, componentPrice, fileSize, componentDescription));

Предположим, я хочу найти этот массив после добавления нескольких значений втаким образом с componentName в качестве ключа.Я попробовал следующий код, но я просто не могу найти способ сделать это:

ArrayList temporarySelectedItemsList = new ArrayList();
ArrayList presentValue = new ArrayList();
string key = componentName; //some specific component name
temporarySelectedItemsList = selectedRowItems;
for (int i = 0; i < temporarySelectedItemsList.Count; i++)
{
    presentValue = (ArrayList)temporarySelectedItemsList[i];
}

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011
var results = selectedRowItems.OfType<ShoppingCartDataStore>().Where(x=>x.ComponentName == "foo")

конечно, вы можете избавиться от OfType, если бы вы использовали общий список, а не массив

РЕДАКТИРОВАТЬ: Итак, я понятия не имею, почему вы не будете использовать LINQ или дженерики, если вы находитесь в 3.5. Но если вы должны:

ArrayList results = new ArrayList();


foreach (ShoppingCartDataStore store in selectedRowItems)
{
    if(store.ComponentName == "foo"){
        results.Add(store);
    }
}
0 голосов
/ 05 апреля 2011

Я болен, и это не проверено, но я думаю, что это сработает.:)

List<ShoppingCartDataStore> aList = new List<ShoppingCartDataStore>();
// add your data here

string key = componentName; //some specific component name
// Now search
foreach (ShoppingCartDataStore i in aList)
{
    if (i.ComponentName == key)
    {
        // Found, do something
    }
}
...