我如何才能找到一个项目的索引在一个列表中没有循环?
目前这看起来不太好-在列表中搜索相同的项两次,只是为了得到索引:
var oProp = something;
int theThingIActuallyAmInterestedIn = myList.IndexOf(myList.Single(i => i.Prop == oProp));
我如何才能找到一个项目的索引在一个列表中没有循环?
目前这看起来不太好-在列表中搜索相同的项两次,只是为了得到索引:
var oProp = something;
int theThingIActuallyAmInterestedIn = myList.IndexOf(myList.Single(i => i.Prop == oProp));
当前回答
那名单呢?FindIndex方法:
int index = myList.FindIndex(a => a.Prop == oProp);
该方法执行线性搜索;因此,这种方法是一种 O(n)运算,其中n为Count。
如果未找到该项,则返回-1
其他回答
如果有人想知道数组版本,它是这样的:
int i = Array.FindIndex(yourArray, x => x == itemYouWant);
如果你不想使用LINQ,那么:
int index;
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Prop == oProp)
{
index = i;
break;
}
}
通过这种方式,您只迭代了一次列表。
那名单呢?FindIndex方法:
int index = myList.FindIndex(a => a.Prop == oProp);
该方法执行线性搜索;因此,这种方法是一种 O(n)运算,其中n为Count。
如果未找到该项,则返回-1
为List中的任何字符串值查找索引的简单解决方案。 下面是字符串列表的代码: int indexOfValue = myList。FindIndex(a => a. contains("从列表中插入值")); 在List中为任何整数值查找索引的简单解决方案。 下面是一个整数列表的代码: int indexOfNumber = myList。IndexOf(/* insert number from list */);
对于简单类型,你可以使用"IndexOf":
List<string> arr = new List<string>();
arr.Add("aaa");
arr.Add("bbb");
arr.Add("ccc");
int i = arr.IndexOf("bbb"); // Returns 1.