查找通用列表中项目索引的简单方法

时间:2010-05-11 17:31:23

标签: c# generics lambda

我正在尝试获取字符串列表中的下一项(邮政编码)。通常情况下,我只是预先找到它,然后在列表中找到下一个,但我试图比那更直观和更紧凑(更多的是运动而不是任何东西)。

我可以用lambda轻松找到它:

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

哪个很酷,而且我正确得到“A2B”,但我更喜欢索引而不是价值。

4 个答案:

答案 0 :(得分:9)

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

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

有关详细信息,请参阅MSDN

答案 1 :(得分:3)

只需从Find(...)切换到FindIndex(...)

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

答案 2 :(得分:1)

试试这个:

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

答案 3 :(得分: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();