Простой способ найти индекс элемента в общем списке - PullRequest
1 голос
/ 11 мая 2010

Я пытаюсь получить следующий элемент в списке строк (почтовые индексы). Обычно я просто выполняю упражнение, пока не найду его, а затем получу следующее в списке, но я пытаюсь быть немного более интуитивным и компактным (больше упражнений, чем что-либо другое).

Я могу легко найти его с помощью лямбды:

List<string> postalCodes = new List<string> { "A1B", "A2B", "A3B" };
currentPostalCode = "A2B";
postalCodes.Find((s) => s == currentPostalCode);

Это круто и все, и я правильно получаю "A2B", но я бы предпочел индекс, чем значение.

Ответы [ 4 ]

9 голосов
/ 11 мая 2010

Вы можете использовать метод IndexOf (это стандартный метод универсального класса List<T>):

List<string> postalCodes = new List<string> { "A1B", "A2B", "A3B" }; 
currentPostalCode = "A2B"; 
int index = postalCodes.IndexOf(currentPostalCode); 

Для получения дополнительной информации см. MSDN .

3 голосов
/ 11 мая 2010

Просто переключитесь с Find (...) на FindIndex (...)

List<string> postalCodes = new List<string> { "A1B", "A2B", "A3B" }; 
currentPostalCode = "A2B"; 
postalCodes.FindIndex(s => s == currentPostalCode);
1 голос
/ 11 мая 2010

попробуйте это:

int indexofA2B = postalCodes.IndexOf("A2B");
0 голосов
/ 11 мая 2010

что-то вроде

List<string> names = new List<string> { "A1B", "A2B", "A3B" };

names.Select((item, idx) => new {Item = item, Index = idx})
    .Where(t=>t.Index > names.IndexOf("A2B"))
            .FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...