2015-11-04 4 views
-4

Во-первых, я использую C# внутри единицы. Хорошо, у меня есть ArrayList. Перечислим элементы, которые мы будем называть. содержимое элементов {яблоко, яблоко, ягода, яблоко, орех}; Я хочу знать, как найти все индексные числа apple, используя items.indexOf(); или какой-либо другой функции. Список содержимого - это, например, только то, что я использую в программе. На самом деле я не уверен, что содержимое будет содержать разные списки по размеру и контенту. Любая помощь будет принята с благодарностью.Получите каждый indexOf в ArrayList, используя строку

+0

Почему не перебирать элементы списка? – Dennis

+0

Чтобы получить хорошее понимание, обратитесь к этому http://www.dotnetperls.com/array-indexof – Moe

+0

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

ответ

0

Non Linq способ сделать это:

private static List<int> Find(ArrayList items, string entry) 
{ 
    var ret = new List<int>(); 
    for (var i = 0; i < items.Count; i++) 
     if ((string) items[i] == entry) 
      ret.Add(i); 
    return ret; 
} 
+0

Я был так доволен использованием indexOf или каким-то другим способом, о котором я даже не думал о других способах. Спасибо. – user2984232

1

Попробуйте следующее:

var result = list 
    .Cast<TypeOfTheObjects>()      // non-generic ArrayList needs a cast 
    .Select((item, index) => new { Index = index, Item = item }) // select each item with its index 
    .Where(x => apple.Equals(x.Item))    // filter 
    .Select(x => x.Index)       // select only index 
    .ToList(); 

В зависимости от типа объектов (и их Equals реализации), возможно, придется изменить проверку равенства.

0
var results = yourList.Cast<Fruit>() 
         .Select((fruit, index) => fruit.Name == "apple" ? index : -1) 
         .Where(elem => elem >= 0) 
         .ToList(); 
Смежные вопросы