我正在尝试获取字符串列表中的下一项(邮政编码)。通常情况下,我只是预先找到它,然后在列表中找到下一个,但我试图比那更直观和更紧凑(更多的是运动而不是任何东西)。
我可以用lambda轻松找到它:
List<string> postalCodes = new List<string> { "A1B", "A2B", "A3B" };
currentPostalCode = "A2B";
postalCodes.Find((s) => s == currentPostalCode);
哪个很酷,而且我正确得到“A2B”,但我更喜欢索引而不是价值。
答案 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();