2014-12-10 2 views
2

Я пытаюсь найти индекс, гдекак найти индекс переменной в массиве внутри структуры внутри другого массива в C#

EventName=NewYearParty; //I know the value of the eventname 

в массиве, имя которого является -> event_array


Я попробовал этот код, но он не работает:

index_event = Array.FindIndex(userlister[5].event_array, row => row.EventName == NewYearParty); 

Вот моя структура:

public struct Events 
    { 
     public string EventName; 
     public string Organizator; 


     public Events(string Name, string Org) 
     { 

      EventName = Name; 
      Organizator = Org; 
     } 
    } 

Вот мой класс:

public class users 
    { 
     public Socket U; 
     public string Name; 
     public Events[] event_array; 
     public string[] status; 

     public users() 
     { 
      U = null; 
      Name = ""; 
      event_array = new Events[50]; 
      status = new string[50]; 
     } 
    } 

Вот другой массив:

public users[] userlister = new users[50]; 

Знаете ли вы какой-либо другой способ найти этот индекс?

ответ

2

Его немного некрасиво (потому что вы в конечном итоге переборе дважды), но вы можете написать:

Events[] event_array = userlister[5].event_array; 
Array.IndexOf(event_array, event_array.First(e => e.EventName == "NewYearParty")); 

См Array.IndexOf для получения дополнительной информации (MSDN). Вы всегда можете просто использовать while петлю, а также:

int index = 0; 
bool found = false; 
Events[] event_array = userlister[5].event_array;  

while (!found && index < event_array.Length) 
{ 
    if (event_array[index].EventName == "NewYearParty") 
     found = true; 
    else 
     index++; 
} 
//Index of the element in "index" 

Ни один из них действительно безопасна; первый будет бросать, если элемент отсутствует, второй выйдет с found false, если этого элемента нет. Тем не менее, эти случаи можно управлять (реализация остается как упражнение), и это доставит вам большую часть пути :)

+0

Я не могу использовать только event_array в этом контексте. Потому что он происходит от структуры, которая указана другим массивом. Когда я пишу свой код, он дает эту ошибку: «event_array не существует в текущем контексте» – bug

+0

Я пробовал это, и он не работает :('var index = userlister [5] .event_array.IndexOf (userlister [5] .event_array. Сначала (e => e.EventName == "NewYearParty")); ' – bug

+0

Ошибка:« Нет перегрузки для метода «IndexOf» принимает 1 аргумент » – bug

Смежные вопросы