2010-05-11 59 views
1

我试图获取字符串(邮政编码)列表中的下一项。通常情况下,我只是直到找到它,然后获得列表中的下一个,但我试图比这更直观,更紧凑(比其他任何练习都多)。查找通用列表中项目索引的简单方法

我可以用一个lambda轻松地找到它:

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

这是很酷,和我得到正确“A2B”,但我更喜欢比的值的索引。

+0

postalCodes.IndexOf (currentPostalCode) – jsmith 2010-05-11 17:35:27

回答

9

可以使用IndexOf方法(这是通用List<T>类的标准方法):

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

欲了解更多信息,请参阅MSDN

3

刚刚从查找(...)切换到FindIndex(...)

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

试试这个:

int indexofA2B = postalCodes.IndexOf("A2B"); 
0

怎么样像

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